在新年之后选择MySQL中的日期范围不起作用

时间:2016-01-03 11:26:12

标签: php mysql prepared-statement

我使用以下select语句来获取过去x天内数据库中的条目数,但是在新的一年之后它似乎不起作用。

SELECT COUNT(*) AS cnt FROM entries WHERE type = 'xxxxx' AND email = 'xx@xxx.com' AND date_created >= CURRENT_DATE-'30 days'

我在'30天'使用字符串的原因是因为它是作为PHP脚本中的预准备语句执行的。有没有理由不能正确地进入往年?

30天和7天的值是相同的,即使7天内包含的条目多于30天。

1 个答案:

答案 0 :(得分:1)

我通过将SQL语句更改为以下内容来解决此问题:

SELECT COUNT(*) AS cnt FROM entries WHERE type = 'xxxxx' AND email = 'xx@xxx.com' AND date_created >= DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY)

这仍适用于准备好的陈述(用30代替?)。

我认为这是MySQL的一个错误所以我会提交一份报告,除非有人能想出原始声明不起作用的逻辑原因吗?