我被困在mysql中使用命令来查询最近3个月的行。这是一个例子:
这是db:
row 1 : 2012/02/10 - id : 1
row 2 : 2012/03/15 - id : 2
row 3 : 2012/05/04 - id : 3
row 4 : 2012/06/04 - id : 4
今天是:2013/03/28
如何编写命令以获取数据库中最新3个月的数据行: 真正的结果将是:第2行3 4
更新-----
Table name = sa_cms_post | col date : createdAt datetime - 0000-00-00 00:00:00
答案 0 :(得分:2)
尝试一下,
SELECT *
FROM sa_cms_post
WHERE MONTH(createdAt) BETWEEN
MONTH(CURDATE()) AND MONTH(CURDATE() + INTERVAL 3 MONTH)
答案 1 :(得分:0)
如果我理解正确,最近3个月你实际上是指从表中获得 3个结尾月行,而且当前日期并不重要。在这种情况下,这有效(SQLFiddle demo):
SELECT *
FROM sa_cms_post
WHERE createdAt > date_sub(
(SELECT max(createdAt) FROM sa_cms_post),
INTERVAL 3 month
)