提问人:softboxkid 提问时间:9/21/2011 更新时间:9/21/2011 访问量:15076
根据当前日期获取前 3 个月的数据 - MySQL
Get previous 3 months data based on current date - MySQL
答:
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 ...
评论