21

我有一个存储“到期日期”的数据库。现在我想将当前日期与存储的到期日期进行比较。如果当前日期在过期日期之前,数据应该像往常一样显示,但如果数据过期,我希望它被排除在外。

我试过了:

$query = $em->createQuery('SELECT d FROM test d WHERE d.expDate > :date')
    ->setParameters('date', 'now()');

如果有人理解我的问题,帮助会很酷,或者一些提示。

4

4 回答 4

30

还有另一种方法:

$query = $em->createQuery('SELECT d FROM test d WHERE d.expDate > :today')
    ->setParameter('today', new \DateTime())->
于 2012-07-22T10:47:49.230 回答
18

现在,您将expDatecolumn 与文本“now()”进行比较,而不是与 function 的结果进行比较now()

$em->createQuery('SELECT d FROM test d WHERE d.expDate > CURRENT_DATE()');
于 2012-05-14T11:09:36.647 回答
2

您可以使用该date函数创建要比较的字符串:

$query = $em->createQuery('SELECT d FROM test d');
$query->addWhere("d.exp_date > ?",date("Y-m-d", time()));
于 2012-11-29T06:19:22.910 回答
2

实际上,您的方法确实有效,但是您的代码中有一个小错误。

你用:

$query = $em->createQuery('SELECT d FROM test d WHERE d.expDate > :date')
->setParameters('date', 'now()');

现在您可以通过两种方式进行更改以使其正常工作: 1. 将“s”留在“setParameters”-> set Parameter

或者

  1. 使用“参数s ”时使用数组,在您的情况下:

    $query = $em->createQuery('SELECT d FROM test d WHERE d.expDate > :date')
     ->setParameters(array('date' => 'now()');
于 2016-07-27T13:30:31.090 回答