How to use the expression mysql NOW() in doctrine querybuilder?
Mats Rietdijk
In Doctrine2 you have to use one of the following instead of NOW()
.
This:
CURRENT_TIMESTAMP()
Or:
...
createQuery(...'WHERE x.date = :now')
->setParameter('now', new \DateTime('now'))
...
If you want only time or only date use one of those:
CURRENT_TIME()
and CURRENT_DATE()
Using query builder it would look like this:
$qb
->select('B')
->from('RandomBundle:Banana', 'B')
->where(
$qb->expr()->gt('B.expiresAt', ':now')
)
->setParameter('now', '\'CURRENT_TIMESTAMP()\'');
Note: extra quotes on parameter set is required to get CURRENT_TIMESTAMP()
function working.
Or simply
$qb
->select('B')
->from('RandomBundle:Banana', 'B')
->where(
$qb->expr()->gt('B.expiresAt', 'CURRENT_TIMESTAMP()')
);
来源:https://stackoverflow.com/questions/13905788/expression-mysql-now-in-doctrine-querybuilder