【问题标题】:Get previous 3 months data based on current date - MySQL根据当前日期获取前 3 个月的数据 - MySQL
【发布时间】:2011-09-21 10:16:30
【问题描述】:

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

请有人指导我。

【问题讨论】:

    标签: mysql sql


    【解决方案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 ...然后就可以看到实际使用的是哪个日期了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多