简体   繁体   English

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

[英]MySQL - First & Last Day of Previous Week

I am trying to get the first and last day of the previous week in MySQL, where the first and last days are Monday and Sunday, respectively. 我试图在MySQL中获得上周的第一天和最后一天,其中第一天和最后一天分别是星期一和星期日。

For example if today (March 1, 2017) is when the SQL is executed I would like to obtain: 例如,如果今天(2017年3月1日)是执行SQL的时间,我想获得:

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

I have tried the following and all sorts of variations with this, without success. 我已经尝试过以下方法以及各种各样的方法,但是都没有成功。

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

Is it possible to achieve these results when executed anytime within the current week? 在当前一周的任何时间执行,是否有可能获得这些结果?

Selecting first and last day of previous week: 选择上一周的第一天和最后一天:

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

s: 2017-02-20 小号:2017-02-20

e: 2017-02-26 e:2017-02-26

And if you want filter last week table rows: 如果要过滤上周的表行:

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

Here you go: 干得好:

SELECT FirstDay, DATE_ADD(FirstDay, INTERVAL 6 DAY) as LastDay
FROM(
SELECT DATE_ADD(DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW()) DAY), INTERVAL -1 WEEK) as FirstDay) a

Here's the SQL Fiddle . 这是SQL Fiddle

First day of the previous week 上周的第一天

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

Last day of the previous week 上周的最后一天

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM