![](/img/trans.png)
[英]How to find in MySQL the nearest (time wise) entry to a given date when only given year or only year and month?
[英]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.