首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 取得上週一至週日日期範圍的 SQL 片段

     編輯:MySQL 綜合教學

MySQL 取得上週一至週日日期範圍的 SQL 片段

適用於報表、排程等需固定取「上週完整範圍」的場景。MySQL 預設週日為每週第一天 (mode 0),需調整。

DECLARE _LastWeekStartTime DATE; -- 上週一
DECLARE _LastWeekEndTime DATE;   -- 上週日

-- 因系統以週日為週首,先減 1 天對齊
SET @A = DATE_ADD(CURDATE(), INTERVAL -1 DAY);
-- 算出本週一
SET @B = SUBDATE(@A, DATE_FORMAT(@A, '%w') - 1);
-- 上週日 = 本週一 - 2 天
SET @C = DATE_ADD(@B, INTERVAL -2 DAY);
-- 上週一 = 上週日所在週的週一
SET _LastWeekStartTime = SUBDATE(@C, DATE_FORMAT(@C, '%w') - 1);
-- 上週日 = 上週一 + 6 天
SET _LastWeekEndTime = DATE_ADD(_LastWeekStartTime, INTERVAL 6 DAY);

說明

  • DATE_FORMAT(date, '%w') 返回 0(週日)~6(週六)。
  • 若你的系統週一為週首 (mode 1),可簡化為 SUBDATE(CURDATE(), INTERVAL WEEKDAY(CURDATE())+7 DAY) 等。
  • 變數可直接用於 WHERE dt BETWEEN _LastWeekStartTime AND _LastWeekEndTime。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved