Подтвердить что ты не робот

Как сравнить дату с текущей датой с помощью Doctrine 2?

У меня есть база данных, где хранится "дата истечения срока действия". Теперь я хочу, чтобы текущая дата была сопоставлена ​​с сохраненной датой истечения срока действия. Если текущая дата предшествует дате истечения срока действия, данные должны отображаться как обычно, но если данные истекли, я хочу, чтобы они были исключены.

Я пробовал:

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

Помощь будет классной, или некоторые подсказки, если кто-то поймет мою проблему.

4b9b3361

Ответ 1

Есть и другой способ:

$query = $em->createQuery('SELECT d FROM test d WHERE d.expDate > :today')
    ->setParameter('today', new \DateTime())->

Ответ 2

Прямо сейчас, вы сравниваете столбец expDate с текстом "now()", а не с результатом функции now().

$em->createQuery('SELECT d FROM test d WHERE d.expDate > CURRENT_DATE()');

Ответ 3

Вы можете использовать функцию date для создания сравниваемой строки:

$query = $em->createQuery('SELECT d FROM test d');
$query->addWhere("d.exp_date > ?",date("Y-m-d", time()));

Ответ 4

Собственно, ваш способ работает, но у вас небольшая ошибка в вашем коде.

Вы используете:

$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()');