How can I use now() in Doctrine 2 DQL?
Asked Answered
F

2

71
$ php app/console doctrine:query:dql 'SELECT NOW()'

[Doctrine\ORM\Query\QueryException] [Syntax Error] line 0, col 7: Error: Expected known function, got 'now'

How can I use MySQL's NOW() function with Doctrine's DQL?

Feingold answered 1/12, 2011 at 20:32 Comment(0)
T
148

The equivalent of MySQL's NOW() is Doctrine DQL's CURRENT_TIMESTAMP().

CURRENT_DATE() only returns the date part.

Reference: DQL date/time related functions

Tardigrade answered 3/12, 2011 at 2:41 Comment(3)
I am not sure but it is not working for me. It returns s0_.available_on >= CURRENT_TIMESTAMP)Renewal
@KonradGałęzowski No, MySQL's NOW() returns 2019-11-29 18:19:37 and Doctrine's CURRENT_TIMESTAMP() returns 2019-11-29 18:19:37.Tardigrade
@Benjamin sorry, you're right. Got cunfused by another error message in my query.Malt
T
2

CURRENT_TIMESTAMP() uses database timezone, which could lead to weird issues. More simple way - you can use parameter and bind new \DateTime() to it (so you will use php timezone)

It will not work for command line of course, but I suppose that you plan to use it in controller/service/repository/etc..

Tactile answered 30/7, 2020 at 17:24 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.