我在计算一个月的最后一个星期五时从@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 |
+------------+
修改
根据提供的日期,给我下个月的最后一个星期五(即使提供的日期)
答案 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