上周如何在MYSQL中获得星期五

Jam*_*ara 5 mysql

上星期怎么去星期五?

我已经尝试对以下代码进行编码,但是它不向前也不向后。

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。

请更改我的编码。

Kae*_*aeL 7

杜德,试试这个:

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)

  • 我给了 +1 只是因为你说老兄。 (2认同)

And*_*y M 6

在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演示