我有一个表,其中的条目具有DATE字段 . 每个条目都有不同的日期 . 我想选择上个月 registred in the database 的所有条目 . 怎么样?
我试过了:
SELECT *
FROM registries
WHERE reg_date = DATE_FORMAT(MAX(reg_date), "%m")`
...没有成功
3 回答
0
基于OMG Ponies的更正查询:
SELECT
r.*
FROM
registries AS r
JOIN (
SELECT
MAX(t.reg_date) AS max_date
FROM
registries AS t) AS t
ON DATE_FORMAT(t.max_date, '%Y-%m') = DATE_FORMAT(r.reg_date, '%Y-%m')
3 回答
基于OMG Ponies的更正查询:
虽然查询的性能不会很好,因为它会在两个计算值上运行JOIN . 我相信它仍然可以正常运行,除非你开始打击数百万条记录 .
另一方面,您可以通过首先查询MAX(reg_date)来更快地运行它
然后在查询中注入结果:
使用first_day作为前一个查询结果的占位符 . 如果你索引reg_date,这应该运行得非常快 .
注意:LAST_DAY是仅限MySQL的功能 .
如果您想要最近30天,这将有效
这将为您提供上个月(5月)的所有记录: