根据当前日期获取前 3 个月的数据 - MySQL
Posted
技术标签:
【中文标题】根据当前日期获取前 3 个月的数据 - MySQL【英文标题】:Get previous 3 months data based on current date - MySQL 【发布时间】:2011-09-21 10:16:30 【问题描述】:如何使用 SQL 语句获取前 3 个月的数据?例如,如果当前日期是 01/01/2012,那么如何获取 2011 年 12 月、11 月、2011 年 10 月的数据?
请有人指导我。
【问题讨论】:
【参考方案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
的索引。
【讨论】:
如果当前日期 = 01/01/2012,您的解决方案可以正常工作。但是当我将当前日期更改为 21/09/2011 时,结果为零。 日期必须是 yyyy-mm-dd 格式,使用 '2011-09-21' 作为日期。 好的,现在我使用了第一个解决方案。但是该解决方案总是返回 2 行而不是 3 行,为什么?我已经把日期改成 yyyy-mm-dd 把select改成select *, DATE_SUB(<date here>, INTERVAL 3 MONTH) as date_used ...
然后就可以看到实际使用的是哪个日期了。以上是关于根据当前日期获取前 3 个月的数据 - MySQL的主要内容,如果未能解决你的问题,请参考以下文章