此查询选择最近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正在返回错误)。
答案 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示例,用于演示。