2010-09-23 31 views
0

什麼是從這個MySQL查詢的不同:做出鑑別在MySQL

WHERE MONTH(date) = MONTH(CURRENT_DATE) 

WHERE date BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH) AND CURRENT_DATE() 

我曾經嘗試都,但我不能看到的不同。

+0

小心......這兩個中的第一個將無法利用您在日期欄中創建的任何索引。 – 2010-09-23 11:09:52

回答

1

對於今天的CURRENT_DATE,即:23日至2010:

WHERE MONTH(date) = MONTH(CURRENT_DATE)date同月,即01月和任何一年的30月之間。

WHERE date BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH) AND CURRENT_DATE()date在過去30/31天內。如果我們在23日,這會給你一個2010年8月23日至2010年9月23日的時間間隔。

+1

您給MONTH的日期有些誤導 - 年沒有考慮到,因此_any_九月將會匹配,而不僅僅是2010年。 – 2010-09-23 06:36:06

+0

@martin - 你說得對,我會解決這個問題。 – eumiro 2010-09-23 06:42:31

0

第一個

WHERE MONTH(date) = MONTH(CURRENT_DATE) 

將選擇的行,其中date列的月份是一樣的當前月(例如,所有的行的量,date字段的月份是九月。

第二個

WHERE date BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH) AND CURRENT_DATE() 

將選擇date字段介於現在和一個月前之間的行。