根据当前日期获取前 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的主要内容,如果未能解决你的问题,请参考以下文章

获取从当前日期到下一个完整月的记录(直到下个月的最后一个日期)mysql [重复]

mysql 根据某一年 查询12个月的数据

mysql 怎么获取前一个月的日期和前一年的日期

给定一个 NSDate,找到前第四个月的最后一天

仅在 MySQL 中返回最近 3 个月的记录

如何在SHELL获取当天时间的月份和上个月的月份还有下个月的月份