MySQL - DATE_ADD月间隔

Nug*_*get 29 mysql sql select dateadd

我遇到了DATE_ADDMySQL中的函数问题.

我的请求看起来像这样:

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

问题是,在结果中, - 我认为 - 因为六月只有30天,因为我有7月 1 的结果,功能不能正常工作.

有没有办法告诉你DATE_ADD工作顺利,并在一个月内采取正确的天数?

Adr*_*iro 57

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)
Run Code Online (Sandbox Code Playgroud)

要么

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

要进一步学习,请查看DATE_ADD文档.

*编辑以纠正语法

  • 顺便说一句,"INTERVAL 6 MONTHS"应为"INTERVAL 6 MONTH".注意最后缺少'S'. (5认同)

won*_*nk0 5

嗯,对我来说这是预期的结果;到 1 月 1 日增加六个月。

mysql> SELECT DATE_ADD( '2011-01-01', INTERVAL 6 month );
+--------------------------------------------+
| DATE_ADD( '2011-01-01', INTERVAL 6 month ) |
+--------------------------------------------+
| 2011-07-01                                 | 
+--------------------------------------------+
Run Code Online (Sandbox Code Playgroud)