我有一个存储“到期日期”的数据库。现在我希望当前日期与存储的到期日期进行比较。如果当前日期在到期日之前,则数据应该像往常一样显示,但如果数据已过期,我希望将其排除。
我试过了:
$query = $em->createQuery('SELECT d FROM test d WHERE d.expDate > :date')
->setParameters('date', 'now()');
如果有人理解我的问题,帮助会很酷,或者有些提示。
答案 0 :(得分:31)
还有另一种方式:
$query = $em->createQuery('SELECT d FROM test d WHERE d.expDate > :today')
->setParameter('today', new \DateTime())->
答案 1 :(得分:15)
目前,您要将expDate
列与文本“now()”进行比较,而不是将结果与now()
进行比较。
$em->createQuery('SELECT d FROM test d WHERE d.expDate > CURRENT_DATE()');
答案 2 :(得分:2)
您可以使用date
函数创建要比较的字符串:
$query = $em->createQuery('SELECT d FROM test d');
$query->addWhere("d.exp_date > ?",date("Y-m-d", time()));
答案 3 :(得分:1)
实际上,您的方式确实有效,但您的代码中有一个小错误。
您使用:
$query = $em->createQuery('SELECT d FROM test d WHERE d.expDate > :date')
->setParameters('date', 'now()');
现在您可以通过两种方式进行更改,以便它可以正常工作: 的 1。将“s”留在“setParameters” - >设置参数
或者
在您使用“参数 s ”时使用数组:
$query = $em->createQuery('SELECT d FROM test d WHERE d.expDate > :date') ->setParameters(array('date' => 'now()');