为什么此查询无效
SELECT * FROM history WHERE DATE(date) < CURDATE() + 30
我正在尝试从30天获取数据,但我的查询无效。为什么
答案 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
,则会将最后一天从结果中排除。