MySQL的上个星期五查询

时间:2015-09-26 05:40:57

标签: mysql

我在计算一个月的最后一个星期五时从@lserni找到了这个很好的例子。

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 |
+------------+

修改

根据提供的日期,给我下个月的最后一个星期五(即使提供的日期)

1 个答案:

答案 0 :(得分:0)

根据Drew的回答,我做了一些实验,找到了适合我的解决方案。

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