2013-01-22 12 views
2

下面是我的MySQL表: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。什麼林希望返回記錄與ID3, 4, 5,6

請幫忙。

+0

SELECT * from table_name 或(年= 2011年和月=> 01) 或(年份> 2011年和<2013年) 或(年份= 2011和月份<= 12) – praveen2609

回答

3

您需要使用這樣的查詢:

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'); 
+0

工作感謝 – NinjaBoy

2

月似乎是在記錄6 01它不會返回,由於MONTH(DATE_FROM)> =「10」

2

在ID 6的從日期2013-01-01和它在2013-01-01失敗作爲月份是01,小於10.如你所提及的一切,條件如此,任何錯誤將不包括該記錄。

2

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

然後查詢是那樣簡單

WHERE YEAR_MONTH> = 201210和YEAR_MONTH < = 201312

+0

你甚至可以使用BETWEEN運算符這樣的方式**其中year_month BETWEEN 201210和201312 ** – zdesam

+0

Thanks dude。我會檢查的。 – NinjaBoy

0

你可以使用這個命令來獲取你的結果...

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