此查询正在选择过去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天之间)应用的行?同样的问题也适用于“2个月前”。什么都不适合我(SQL正在返回错误)。

最佳答案

这里需要注意的一点是,并非所有的月份都是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例子来说明这一点。

10-06 01:51