2014-02-13 42 views
1

我正在寫一個視圖的語法來查找數據庫中的時間戳col大於或等於第一個星期一的日期去年四月。由於四月份的第一個星期一與當前日期相關,因此我無法使用靜態日期。MySQL視圖的語法,where子句大於或等於最後一個四月的第一個星期一

任何指針,將不勝感激。我花了相當長的時間試圖弄清楚如何用MySQL的日期時間函數來做這件事,而且迄今爲止還沒有任何運氣!你可以做到這一點

回答

1

得到最後明年的4月1日之間的合作四月當前日期:

SELECT YEAR(DATE_ADD(CURDATE(), INTERVAL ((4-MONTH(CURDATE()))%24-12)%12 MONTH)); 
:爲當前日期今年4

SELECT DATE_ADD(CURDATE(), INTERVAL ((4-MONTH(CURDATE()))%24-12)%12 MONTH); 

GET年

得到第一個星期一2013年4月的,例如:

SELECT DATE_SUB('2013-04-07',INTERVAL WEEKDAY('2013-04-07') DAY); 

獲得去年四月份的第一個星期一:

SELECT DATE_SUB(CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL ((4-MONTH(CURDATE()))%24-12)%12 MONTH)),"-04-07"),INTERVAL WEEKDAY(CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL ((4-MONTH(CURDATE()))%24-12)%12 MONTH)),"-04-07")) DAY); 
+0

謝謝,這個工作一種享受! – ThePHPUnicorn

0

一種方法是以下SQL:

SELECT * FROM DATA WHERE year(adddate(created_at, interval 9 month)) >= year(curdate()); 

這只是9個月轉移到一切未來,所以2013年4月1日將顯示爲2014年1月1日爲where條款的目的。

你也可以3個月移一切回來,但你也必須轉移CURDATE,以確保其1月1日和

sqlFiddle

相關問題