MySQL - 前一周的第一天和最后一天

cho*_*boy 3 mysql sql

我试图在 MySQL 中获取前一周的第一天和最后一天,其中第一天和最后一天分别是星期一和星期日。

例如,如果今天(2017 年 3 月 1 日)是执行 SQL 的时间,我想获得:

  • 第一天 --> 2 月 20 日
  • 最后一天 --> 2 月 26 日

我已经尝试了以下和各种变体,但没有成功。

SELECT DATE_ADD(curdate(), INTERVAL(-WEEKDAY(curdate())) DAY); 
Run Code Online (Sandbox Code Playgroud)

在本周内的任何时间执行时是否有可能达到这些结果?

Moh*_*Mad 6

选择上周的第一天和最后一天:

SELECT
 (curdate() - INTERVAL((WEEKDAY(curdate()))+1) DAY) as e,
 (curdate() - INTERVAL((WEEKDAY(curdate()))+7) DAY) as s
Run Code Online (Sandbox Code Playgroud)

s: 2017-02-20

电子:2017-02-26

如果你想过滤上周的表格行:

SELECT * FROM tblName
WHERE dateCol >= (curdate() - INTERVAL((WEEKDAY(curdate()))+7) DAY)
  AND dateCol < (curdate() - INTERVAL((WEEKDAY(curdate()))+1) DAY)
ORDER BY dateCol DESC -- or ASC
Run Code Online (Sandbox Code Playgroud)