从当前日期到当天后30天的数据

时间:2014-08-19 20:40:23

标签: mysql

为什么此查询无效

SELECT * FROM history WHERE DATE(date) < CURDATE() + 30

我正在尝试从30天获取数据,但我的查询无效。为什么

3 个答案:

答案 0 :(得分:2)

+30是什么意思?天?年份?月?小时?您需要使用(正确的语法)MySQL理解的格式:

SELECT * FROM history WHERE DATE(date) < CURDATE() + INTERVAL 30 DAY

答案 1 :(得分:0)

因为您没有使用正确的构造,请尝试:

SELECT * FROM history WHERE DATE_ADD(date, INTERVAL 30 DAY);

答案 2 :(得分:0)

要获取今天的数据到当天后的30天,您必须设置上限和下限,因此请使用:

SELECT * FROM history WHERE 
    date >= CURDATE()
AND
    date < CURDATE() + INTERVAL 31 DAY

请注意,如果不使用date列中的函数,则不会禁止MySQL在此列上使用索引。

下限应该是显而易见的,上限意味着你比今天晚了30天。如果您使用+ INTERVAL 30 DAY,则会将最后一天从结果中排除。