如何在 Doctrine 2 DQL 中使用 now()?

Posted

技术标签:

【中文标题】如何在 Doctrine 2 DQL 中使用 now()?【英文标题】:How can I use now() in Doctrine 2 DQL? 【发布时间】: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 中使用 mysqlNOW() 函数?

【问题讨论】:

【参考方案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 时区)

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

【讨论】:

以上是关于如何在 Doctrine 2 DQL 中使用 now()?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server 的 Doctrine 2 中更改 DQL 查询中的 LockMode

DQL 语句在使用 Zend Framework 和 Doctrine 的应用程序中的位置

Doctrine DQL:如何使表达式反转

如何删除学说 Doctrine Raw Sql 查询中的特定 dql 部分?

带有类名的 Doctrine 2 DQL 查询?

Doctrine 2 DQL CONCAT 字段和常量字符串