【问题标题】:How can I use now() in Doctrine 2 DQL?如何在 Doctrine 2 DQL 中使用 now()?
【发布时间】:2012-01-10 23:35:55
【问题描述】:
$ php app/console doctrine:query:dql 'SELECT NOW()'

[学说\ORM\查询\查询异常] [语法错误] line 0, col 7: Error: Expected known function, got 'now'

如何在 Doctrine 的 DQL 中使用 MySQL 的 NOW() 函数?

【问题讨论】:

    标签: mysql symfony doctrine-orm dql


    【解决方案1】:

    相当于 MySQL 的 NOW() 是 Doctrine DQL 的 CURRENT_TIMESTAMP()

    CURRENT_DATE() 只返回日期部分。

    参考:DQL date/time related functions

    【讨论】:

    • 我不确定,但它不适合我。它返回s0_.available_on >= CURRENT_TIMESTAMP)
    • @KonradGałęzowski 不,MySQL 的 NOW() 返回 2019-11-29 18:19:37 而 Doctrine 的 CURRENT_TIMESTAMP() 返回 2019-11-29 18:19:37
    • @Benjamin 对不起,你是对的。对我的查询中的另一条错误消息感到困惑。
    【解决方案2】:

    CURRENT_TIMESTAMP() 使用数据库时区,这可能会导致奇怪的问题。 更简单的方法 - 您可以使用参数并将新的 \DateTime() 绑定到它(因此您将使用 php 时区)

    它当然不适用于命令行,但我想你打算在控制器/服务/存储库/等中使用它..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多