MySQL - First&上周的最后一天

时间:2017-03-01 19:16:22

标签: mysql sql

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

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

  • FirstDay - > 2月20日
  • LastDay - > 2月26日

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

SELECT DATE_ADD(curdate(), INTERVAL(-WEEKDAY(curdate())) DAY); 

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

3 个答案:

答案 0 :(得分:4)

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

SELECT
 (curdate() - INTERVAL((WEEKDAY(curdate()))+1) DAY) as e,
 (curdate() - INTERVAL((WEEKDAY(curdate()))+7) DAY) as s
  

s:2017-02-20

     

e: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

答案 1 :(得分:1)

你走了:

preserveAspectRatio="slice"

这是 SQL Fiddle

答案 2 :(得分:0)

前一周的第一天

SELECT SUBDATE(SUBDATE(CURDATE(),7), WEEKDAY(CURDATE()));

上一周的最后一天

SELECT ADDDATE(SUBDATE(CURDATE(),7), 6 - WEEKDAY(CURDATE()));