Mysql - 过去30天的记录,但是1个月和2个月之前

时间:2015-05-20 19:35:03

标签: mysql date time

此查询选择最近30天应用的行:

SELECT `amount` FROM `mg_inputs` WHERE `amount`<0 AND `product`='144' AND DATE(firstedit) BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()

如何选择最近30天,但是1个月前(在今天 - 30天和今天 - 60天之间)应用行的查询?同样的问题适用于&#34; 2个月前&#34;。根本没有什么对我有用(SQL正在返回错误)。

1 个答案:

答案 0 :(得分:3)

此处需要注意的一件重要事项是,并非所有月份都是30天,因此请使用INTERVAL DAY而不是INTERVAL MONTH

接下来,您不需要使用减法标记来表示日期,您可以使用DATE_SUB()功能来完成您所需的操作。

最后,记住这些事项,您可以使用BETWEEN运算符检查日期范围内的行。因此,例如,如果您想要一个月前的所有行,请尝试:

SELECT *
FROM myTable
WHERE dateColumn BETWEEN DATE_SUB(CURDATE(), INTERVAL 2 MONTH) AND DATE_SUB(CURDATE(), INTERVAL 1 MONTH);

您应该注意,要使BETWEEN运算符正常工作,必须先显示较早的日期。这是一个SQL Fiddle示例,用于演示。