一尘不染

MySQL-DATE_ADD月间隔

sql

DATE_ADD在MySQL中遇到函数问题。

我的要求看起来像这样:

SELECT * 
FROM mydb 
WHERE creationdate BETWEEN "2011-01-01" AND DATE_ADD("2011-01-01", INTERVAL 6 MONTH) 
GROUP BY MONTH(creationdate)

我的问题是,结果是-我认为-因为 6月 只有30天,所以该功能无法正常工作,因为我具有 7月 1 的结果。

有没有办法告诉DATE_ADD您一个月内工作良好并在正确的天数内工作?


阅读 177

收藏
2021-03-17

共1个答案

一尘不染

DATE_ADD在不同的月份都可以正常工作。问题是您要添加六个月的时间,2001-01-01而应该在7月1日。

这是您要执行的操作:

SELECT * 
FROM mydb 
WHERE creationdate BETWEEN "2011-01-01" 
                   AND DATE_ADD("2011-01-01", INTERVAL 6 MONTH) - INTERVAL 1 DAY
GROUP BY MONTH(creationdate)

或者

SELECT * 
FROM mydb 
WHERE creationdate >= "2011-01-01" 
AND creationdate < DATE_ADD("2011-01-01", INTERVAL 6 MONTH)
GROUP BY MONTH(creationdate)

为了进一步学习,请参阅DATE_ADD文档

*已编辑以更正语法

2021-03-17