【问题标题】: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)