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