此查询选择最近 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证明这一点的例子。
关于Mysql - 最近 30 天,但 1 个月和 2 个月前的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30358848/