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

expDate現在、列を関数の結果ではなく、テキスト「now()」と比較していますnow()

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

実際、あなたの方法は機能しますが、コードに小さなエラーがあります。

あなたが使う:

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

機能するように、次の 2 つの方法で変更できます

または

  1. あなたの場合、 「パラメータs 」を使用する場合は配列を使用します。

    $query = $em->createQuery('SELECT d FROM test d WHERE d.expDate > :date')
     ->setParameters(array('date' => 'now()');
于 2016-07-27T13:30:31.090 に答える
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 に答える