【发布时间】:2012-12-09 07:02:21
【问题描述】:
我必须过滤从当天开始的 SQL 的结果,并显示直到当天 + 10 天的所有记录。因此,如果是 12 月 22 日,我应该显示从那天开始的所有记录,而不是 1 月 1 日之后的记录。我怎样才能做到这一点?我尝试了一个像下面这样的简单查询,但它似乎只显示当月最后一天的记录,而不是显示下一年的记录,而是回到当年的第一个月。
SELECT *
FROM mytable
WHERE DAY(mydatefield) >= DAY(CURRENT_TIMESTAMP)
AND mydatefield <= DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 10 DAY)
编辑 1
我正在使用 Symfony 2 + Doctrine 2 查询构建器,因此查询必须与它们兼容
编辑 2
我通过使用 eggyal 建议的查询和这个 PHP 代码解决了 Doctrine 2 问题
$queryBuilder->where($queryBuilder->expr()->gte('mydatefield', 'CURRENT_DATE()'))->andWhere($queryBuilder->expr()->lte('mydatefield', 'DATE_ADD(CURRENT_DATE(), 10, \'DAY\')'));
【问题讨论】:
标签: php mysql datetime symfony filter