2015-09-26 75 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

我没有。我试了一下,它刚刚返回同一个月。但你用正确的方式指出了我的正确方向。 –

相关问题