如何在MySQL中获取DATETIME列对应以周日为结束的周末日期
MySQL 计算以周日为周结束日的周结束日期
核心实现方法
通过MySQL内置日期函数组合即可实现需求,兼容所有主流MySQL版本,逻辑如下:
- 先用
DATE()函数提取DATETIME类型字段的纯日期部分,丢弃时间信息 - 借助
WEEKDAY()函数获取日期对应的周内索引,该函数返回规则为:0=周一、1=周二、...、5=周六、6=周日 - 计算到当周周日需要偏移的天数:
6 - WEEKDAY(日期),刚好对应从当前日期到本周日需要增加的天数 - 最后通过
DATE_ADD()完成日期偏移,得到周结束日期
完整查询示例
假设你的表名为your_table,查询语句如下:
SELECT Unique_ID, `Date`, DATE_ADD(DATE(`Date`), INTERVAL (6 - WEEKDAY(`Date`)) DAY) AS week_end_date FROM your_table;
注意:
Date属于MySQL关键字,作为字段名使用时需要用反引号包裹避免语法报错。
效果验证
以你给出的示例日期2021-01-01 15:02:19.029为例:
DATE('2021-01-01 15:02:19.029')得到纯日期2021-01-01WEEKDAY('2021-01-01')返回4(对应周五)- 偏移天数为
6-4=2,日期加2天得到2021-01-03,完全符合预期。
内容的提问来源于stack exchange,提问作者JumpJ
相关产品推荐
相关产品推荐

