J'ai une base de données où une "date d'expiration" est stockée. Maintenant, je veux comparer la date actuelle avec la date d'expiration stockée. Si la date actuelle est antérieure à la date d'expiration, les données doivent être affichées comme d'habitude, mais si les données ont expiré, je souhaite qu'elles soient exclues.
J'ai essayé:
$query = $em->createQuery('SELECT d FROM test d WHERE d.expDate > :date')
->setParameters('date', 'now()');
L'aide serait cool, ou quelques conseils si quelqu'un comprend mon problème.
Il y a un autre moyen:
$query = $em->createQuery('SELECT d FROM test d WHERE d.expDate > :today')
->setParameter('today', new \DateTime())->
À l'heure actuelle, vous comparez la colonne expDate
au text "now ()" et non au résultat de la fonction now()
.
$em->createQuery('SELECT d FROM test d WHERE d.expDate > CURRENT_DATE()');
Vous pouvez utiliser la fonction date
pour créer une chaîne à comparer:
$query = $em->createQuery('SELECT d FROM test d');
$query->addWhere("d.exp_date > ?",date("Y-m-d", time()));
En fait, votre chemin fonctionne mais vous avez une petite erreur dans votre code.
Tu utilises:
$query = $em->createQuery('SELECT d FROM test d WHERE d.expDate > :date')
->setParameters('date', 'now()');
Maintenant, vous pouvez changer de deux manières pour que cela fonctionne: 1. Laissez le "s" dans "setParameters" -> set Parameter
Ou
Utilisez array en utilisant "paramètre s ", dans votre cas:
$ query = $ em-> createQuery ('SELECT d FROM test d WHERE d.expDate>: date') -> setParameters (array ('date' => 'now ()');