2015-09-26 74 views
0

我在計算一個月的最後一個星期五時發現了@lserni的這個優秀示例。MySQL的月查詢的最後一個星期五

SET @DATE='1962-10-20'; 
SELECT DATE_SUB(LAST_DAY(@DATE), INTERVAL ((WEEKDAY(LAST_DAY(@DATE))+7-4))%7 DAY) AS friday; 
+------------+ 
| friday  | 
+------------+ 
| 1962-10-26 | 
+------------+ 

編輯:

根據提供的日期,給我的下一個上週五一個月(即使提供的日期)

+0

以及如果不是? – Drew

+0

然後給我當月的最後一個星期五。 –

+0

在那裏,希望我把這個問題設置爲聰明的人找出:) – Drew

回答

0

根據德魯的答案,我做了一些嘗試和找到了適合我的解決方案。

SET @DATE='2015-09-26'; 
SELECT 
    CASE WHEN DATE_SUB(LAST_DAY(@DATE), INTERVAL ((WEEKDAY(LAST_DAY(@DATE))+7-4))%7 DAY) > @DATE 
    THEN DATE_SUB(LAST_DAY(@DATE), INTERVAL ((WEEKDAY(LAST_DAY(@DATE))+7-4))%7 DAY) 
    ELSE DATE_SUB(LAST_DAY(DATE_ADD(@DATE, INTERVAL 1 MONTH)), INTERVAL ((WEEKDAY(LAST_DAY(DATE_ADD(@DATE, INTERVAL 1 MONTH)))+7-4))%7 DAY) 
    END AS last_friday 
+0

我沒有。我試了一下,它剛剛返回同一個月。但你用正確的方式指出了我的正確方向。 –

相關問題