在计算一个月的最后一个星期五时,我发现了@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 |
+------------+
编辑:
根据所提供的日期,给我一个月的下一个星期五(即使提供的日期)。
发布于 2015-09-26 06:32:41
基于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
https://stackoverflow.com/questions/32794049
复制相似问题