【问题标题】:DATEDIFF not working in Symfony2DATEDIFF 在 Symfony2 中不起作用
【发布时间】:2014-11-06 11:30:57
【问题描述】:

我无法在 symfony2 存储库中使用 DATEDIFF 和 CURRENT_TIME。当我使用年份功能时也存在同样的问题..为什么会这样?

return $this->getEntityManager()
                            ->createQuery("SELECT u FROM AcmeAdminBundle:AppUsers u  WHERE DATEDIFF(CURRENT_TIME(), u.dob) BETWEEN :fromage AND :toage and u.country = :countries ORDER BY u.id DESC")
                            ->setParameter('fromage', $fromage)
                            ->setParameter('toage', $toage)
                            ->setParameter('countries', $countrystr);

如果我没有使用上述功能,这个查询可以正常工作

【问题讨论】:

  • 如果将结果保存到变量中,var_dump() 会说什么?
  • 似乎不是 Symfony(或 Doctrine)的问题。可能问题出在MySql中。检查您的 MySql 版本。 DATEDIFF() 函数在 v4.1.1 上启动
  • 您究竟是如何无法使用它的?是否抛出异常?还是返回的结果与您的预期有所不同?请说明这一点,否则问题很难回答。

标签: php mysql symfony


【解决方案1】:

基于链接 (DQL Functions),DATEDIFF 已定义且在 Doctrine 中有效,只需将其从 DATEDIFF(expr1, expr2) 更改为 DATE_DIFF(expr1, expr2)
此外,如果您的字段是日期时间字段,最好使用CURRENT_DATE() 而不是NOW()CURRENT_TIME()

【讨论】:

  • +1 感谢纠正我,我确信默认情况下还不支持它:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多