如何在 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 中使用 mysql 的 NOW()
函数?
【问题讨论】:
【参考方案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 的应用程序中的位置