【问题标题】:MySQL select complete last monthMySQL select 上个月完成
【发布时间】:2020-02-28 18:55:29
【问题描述】:

如何选择上个月(或30天)的所有数据?

我已经找到了一些答案,并且大多给出了这个解决方案

SELECT * 
FROM gigs
WHERE date > DATE_SUB(CURDATE(), INTERVAL 3 MONTH)
ORDER BY date DESC

但这也给了我未来的日期

我只对上个月或 30 天(不是下个月及以后)的天数感兴趣

【问题讨论】:

    标签: mysql sql date where-clause


    【解决方案1】:

    这是你想要的吗?

    WHERE date > DATE_SUB(CURDATE(), INTERVAL 1 MONTH) AND date <= CURRENT_DATE
    

    我添加了一个条件,以便查询过滤日期不大于今天。我还修改了您的代码,因此日期范围从一个月前开始(您有 3 个月)。

    【讨论】:

      【解决方案2】:

      试试这个代码

      SELECT * FROM gigs
      WHERE date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
      ORDER BY date DESC
      

      【讨论】:

        【解决方案3】:

        你要求两个不同的东西。

        最后 30 天很容易。

        date between now() - interval 30 day and now()
        

        这个月的数据是这样的:

        date between (last_day(Now() - INTERVAL 1 MONTH) + INTERVAL 1 DAY) and last_day(Now())
        

        几个月前的数据是这样的:

        date between (last_day(Now() - INTERVAL 4 MONTH) + INTERVAL 1 DAY) 
               and  
                     (last_day(Now() - INTERVAL 3 MONTH) + INTERVAL 1 DAY) 
        

        【讨论】:

        • 两种解决方案都将给出未来日期
        • 你只需要 "and date
        猜你喜欢
        • 2014-01-29
        • 2012-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-01
        • 1970-01-01
        • 2018-07-27
        相关资源
        最近更新 更多