根据当前日期获取前 3 个月的数据 - MySQL

Get previous 3 months data based on current date - MySQL

提问人:softboxkid 提问时间:9/21/2011 更新时间:9/21/2011 访问量:15076

问:

如何使用SQL语句获取过去3个月的数据?例如,如果当前日期是01/01/2012,那么如何获取2011年12月、11月、10月的数据?

请有人指导我。

MySQL的 sql

评论


答:

15赞 Johan 9/21/2011 #1
SELECT * FROM table1 
WHERE mydate BETWEEN DATE_SUB(now(), INTERVAL 3 MONTH) AND now()

或者,如果您想在几个月内停留

SELECT * FROM table1 
WHERE MONTH(mydate) BETWEEN MONTH(DATE_SUB(now(), INTERVAL 3 MONTH)) AND MONTH(now())
  AND YEAR(mydate) BETWEEN YEAR(DATE_SUB(now(), INTERVAL 3 MONTH)) AND YEAR(now())

后一个版本的运行速度会慢得多,因为它不能使用 但是 的索引。mydate

评论

0赞 softboxkid 9/21/2011
如果当前日期 = 01/01/2012,则解决方案工作正常。但是当我将当前日期更改为 21/09/2011 时,我得到的结果为零。
0赞 Johan 9/21/2011
日期需要为yyyy-mm-dd格式,使用“2011-09-21”作为日期。
0赞 softboxkid 9/21/2011
好的,现在我使用了第一个解决方案。但是该解决方案总是返回 2 行而不是 3 行,为什么?我已经将日期更改为 yyyy-mm-dd
0赞 Johan 9/21/2011
将选择更改为 然后,您可以看到实际使用的日期。select *, DATE_SUB(<date here>, INTERVAL 3 MONTH) as date_used ...