Comment comparer le champ datetime de Doctrine2 avec une date?
Je veux obtenir les éléments qui ont été créés aujourd'hui par un QueryBuilder de Doctrine2. Je veux comparer les createdAt(Datetime) champ avec aujourd'hui paramètre(Date). Est-il possible de le faire en une seule requête?
$qb = $this->createQueryBuilder('i');
$qb->innerJoin('i.type', 'it');
$qb->andWhere('it.name = :type');
$qb->andWhere('i.createdAt < :today');
//i.createdAt == datetime and :today parameter is a date
source d'informationauteur gperriard
Vous devez vous connecter pour publier un commentaire.
une idée est d'extraire à partir de la date: année, mois et jour. Et puis
JOUR MOIS et AN que vous prenez le DoctrineExtensions de
par exemple
DoctrineExtensions
Cela fonctionne pour moi. Vous avez seulement besoin des fichiers: day.php, month.php et year.php.....
Vous obtenez le mois par exemple:
Copie day.php, month.php et year.php pour votre bundle Xy\TestBundle\Dql
Enregistrer les nouvelles fonctions dans l'app\config.yml avec
Il est rare qu'une telle maturité ORM ne fournit pas les
DATE
fonction. Toutefois, afin d'obtenir une date d'un champ datetime, vous pouvez appliquer laSUBSTRING
fonction comme ceci:Espère que cela aide!
Il y est une meilleure option que l'ajout de la doctrine de l'extension de la date.
Vous devez d'abord obtenir les start-datetime et de fin datetime :
Maintenant les utiliser dans la requête :
Il est également possible d'utiliser la fonction intégrée
DATE_DIFF(date1, date2)
qui renvoie différence en jours. Vérifier docsVous devez ajouter à votre requête QueryBuilder la
today
paramètre.Avec le QueryBuilder, vous pouvez comparer les dates de DateTime au format
'Y-m-d'
Une solution de facilité serait de format datetime en conséquence