2013-08-23 136 views
4

如何在SELECT中查找第一天?MySQL選擇年份和月份的第一天

​​

我發現這對月 - 但我不太有把握足夠的一年: (我一直在尋找這樣一個單獨的查詢找到月初的和現在的數據)

WHERE (`DATE` between DATE_FORMAT(NOW() ,'%Y-%m-01') AND NOW()) 

回答

14

我想你需要:

WHERE (`DATE` between DATE_FORMAT(NOW() ,'%Y-01-01') AND NOW()) 

說實話,你可以這樣做:

WHERE (`DATE` between DATE_FORMAT(NOW() ,'%Y') AND NOW()) 
+1

哈哈,哇。我爲什麼沒有看到。 –

3

如果一個月以上的作品,那麼這將全年工作:

WHERE (`DATE` between DATE_FORMAT(NOW() ,'%Y-01-01') AND NOW()) 
+0

好的,我覺得自己像個笨蛋。 *感嘆*謝謝。 –

9

要獲得本年度的第一天,我用:

SELECT MAKEDATE(year(now()),1); 

因此,在您查詢,您可以這樣寫:

where `date` >= MAKEDATE(year(now()),1) 

我相當普遍地做了類似過去整整兩年的銷售報告,但我總是想從頭開始一年的寧。因此顯示了2整年和迄今爲止的一年。

where date>= MAKEDATE(year(now()-interval 2 year),1) 

但是爲了進一步複雜化,我們的財務年度從五月一號開始。我一直想在五月一號開始。

where date >= MAKEDATE(year(now()-interval 2 year),1) + interval 120 day 

或作爲替代

where date >= MAKEDATE(year(now()-interval 2 year),121) 

。五月是一個年度的第121天。但是這種方法在閏年中不起作用。

閏年證明的版本是:

where date => select MAKEDATE(year(now()-interval 5 year),1) + interval 4 month 

這將永遠返回XXXX-05-01日期,無論是閏年。

+0

SELECT MAKEDATE(year(now()),1);看起來比接受的答案更乾淨。 – donL

相關問題