簡體   English   中英

mysql-如何僅按月和年指定日期范圍獲取數據

[英]mysql - How to get data by date range given only month and year

下面是我的mysql表:

--------------------------
ID  Date_From   Date_To
--------------------------
1   2011-02-01  2011-02-28
2   2012-09-01  2012-09-30
3   2012-10-01  2012-10-30
4   2012-11-01  2012-11-30
5   2012-12-01  2012-12-30
6   2013-01-01  2013-01-30
7   2014-03-01  2014-03-31

我有這個mysql語句:

SELECT *
FROM TIME_PERIOD
WHERE
  (YEAR(DATE_FROM) >= '2012' AND MONTH(DATE_FROM) >= '10')
  AND (YEAR(DATE_TO) <= '2013' AND MONTH(DATE_TO) <= '12');

僅返回ID 3, 4,5 我期望返回的是ID 3, 4, 5,6

請幫忙。

您需要使用如下查詢:

SELECT * FROM TIME_PERIOD WHERE 
(YEAR(DATE_FROM) >= '2013' OR (YEAR(DATE_FROM) >= '2012' AND
 MONTH(DATE_FROM) >= '10')) AND 
(YEAR(DATE_TO) <= '2013' AND MONTH(DATE_TO) <= '12');

月份似乎是記錄6中的01。它不會返回該值,因為MONTH(DATE_FROM)> ='10'

在ID 6中,起始日期為2013-01-01,由於日期為01(小於10),因此2013-01-01日期為2013-01-01,因為您提到了所有條件,所以任何錯誤都將不包含該記錄。

您可以創建一個單獨的列,如year_month,例如YYYYMM,並創建兩個觸發器以根據需要自動更新ON INSERT和ON UPDATE列。

然后查詢將像

WHERE year_month> = 201210和year_month <= 201312

您可以使用此命令獲取結果...

SELECT * FROM `TIME_PERIOD` WHERE `DATE_FROM` >= '2012-10-01' AND `DATE_TO` <= '2013-01-30'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM