我想从mysql数据库中选择超过1个月的数据

我想从mysql数据库中选择超过1个月的数据,mysql,sql,Mysql,Sql,我想从mysql数据库中选择超过1个月的数据。我试过这个问题。它不起作用。正确的查询是什么 SELECT * FROM `mails` WHERE `received_time` BETWEEN NOW() AND DATE_SUB(NOW(),INTERVAL 1 MONTH) 请尝试以下查询: SELECT * FROM `mails` WHERE `received_time` < DATE_SUB(NOW(),INTERVAL 1 MONTH) SELECT 2 BETWEEN

我想从mysql数据库中选择超过1个月的数据。我试过这个问题。它不起作用。正确的查询是什么

SELECT * FROM `mails` WHERE `received_time` BETWEEN NOW() AND DATE_SUB(NOW(),INTERVAL 1 MONTH)
请尝试以下查询:

SELECT * FROM `mails` WHERE `received_time` < DATE_SUB(NOW(),INTERVAL 1 MONTH)
SELECT 2 BETWEEN 1 AND 3
     , 2 BETWEEN 3 AND 1
从'mails'中选择*,其中'received_time`

您的received_time列必须采用datetime格式,如“2015-05-17 23:30:40”。

问题在于,在比较之间使用
时,必须首先指定下限,最后指定上限

作为演示,请尝试以下查询:

SELECT * FROM `mails` WHERE `received_time` < DATE_SUB(NOW(),INTERVAL 1 MONTH)
SELECT 2 BETWEEN 1 AND 3
     , 2 BETWEEN 3 AND 1
第一个表达式的计算结果为TRUE(返回1),第二个表达式的计算结果为FALSE(返回0)

只需将
中的两个值重新排列在
之间,就可以了


这将返回上个月内的行:

  WHERE received_time BETWEEN NOW() + INTERVAL -1 MONTH AND NOW()
那相当于

  WHERE received_time >= NOW() + INTERVAL -1 MONTH
    AND received_time <= NOW()

如果将这两个值之间的值反转,则此查询将起作用。下限(较早的日期值)必须是第一个。上限(较晚的日期值)必须是最后一个。交换一下,你会很好的。看看我的答案。