Mysql - 最近 30 天,但 1 个月和 2 个月前的记录

标签 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 天之间)应用的行如何?同样的问题也适用于“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/

相关文章:

php - 键/值对中的 Laravel 查询生成器

php - MySQL 3表连接user_id,没有得到NULL值,而是重复的条目

javascript - 如何验证输入到 3 个单独字段中的日期?

sql - 从Presto中的变量生成间隔

mysql - 如何在不使用日期字段的情况下选择两个日期之间的所有记录?

excel - excel日夜平均温度

MYSQL更新查询去除空格

mysql - 在mysql子查询中按日期获取第一条记录和最后一条记录的值

php - 为什么 MySQL 选择日期对于不同的月份不起作用

sql - 过滤掉 PostgreSQL 中指定星期几的记录