如何使用Doctrine 2将日期与当前日期进行比较?

时间:2012-05-14 11:06:01

标签: php symfony doctrine-orm

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

我试过了:

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

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

4 个答案:

答案 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” - >设置参数

或者

  1. 在您使用“参数 s ”时使用数组:

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