簡體   English   中英

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

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

我試圖在MySQL中獲得上周的第一天和最后一天,其中第一天和最后一天分別是星期一和星期日。

例如,如果今天(2017年3月1日)是執行SQL的時間,我想獲得:

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

我已經嘗試過以下方法以及各種各樣的方法,但是都沒有成功。

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

在當前一周的任何時間執行,是否有可能獲得這些結果?

選擇上一周的第一天和最后一天:

SELECT
 (curdate() - INTERVAL((WEEKDAY(curdate()))+1) DAY) as e,
 (curdate() - INTERVAL((WEEKDAY(curdate()))+7) DAY) as 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

干得好:

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

這是SQL Fiddle

上周的第一天

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

上周的最后一天

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM