上星期怎么去星期五?
我已经尝试对以下代码进行编码,但是它不向前也不向后。
SELECT DATE_FORMAT(LAST_DAY(NOW()) - ((7 + WEEKDAY(LAST_DAY(NOW())) - 4) % 7), '%Y-%m-%d') last_friday;
Run Code Online (Sandbox Code Playgroud)
我需要的结果应该是:2013-05-24而不是2013-05-31。
请更改我的编码。
杜德,试试这个:
SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL ((7 + WEEKDAY(DATE_SUB(NOW(), INTERVAL 1 WEEK)) - 4) % 7) DAY), '%Y-%m-%d');
Run Code Online (Sandbox Code Playgroud)
在MySQL中,该WEEKDAY函数返回一个从0到6的整数:星期一为0,星期二为1,以此类推。如果将该值用作天数,然后从当前日期中减去它,例如:
NOW() - INTERVAL WEEKDAY(NOW()) DAY
Run Code Online (Sandbox Code Playgroud)
您将始终获得当前[ISO]周的星期一。
知道这一点,您只需要再减去3天即可获得上周的星期五。因此,最终表达式将如下所示:
NOW() - INTERVAL WEEKDAY(NOW()) + 3 DAY
Run Code Online (Sandbox Code Playgroud)
您也可以查看此SQL Fiddle演示。
| 归档时间: |
|
| 查看次数: |
7706 次 |
| 最近记录: |