Dans Drupal 8, le champ Date uniquement stocke les données dans une colonne varchar au format CCYY-MM-DD , par exemple, 2016-04-18 .
En tant que tel, vous ne pouvez plus simplement faire une requête d'entité basée sur un horodatage supérieur à ( > = ), inférieur à ( <= ) ou similaire.
Existe-t-il une solution simple sur la façon de gérer cela? Plus précisément, j'essaie de faire deux requêtes, l'une où le champ de date a entre 14 et 21 jours, et l'autre où le champ de date a 21 jours et plus.
>=
marche pas ? 20160318> = 20160218XXXX-XX-XX
(2016-04-18), donc ce n'est techniquement pas un nombre, donc faire une condition numérique contre cela ne serait pas valide.'2016-04-18' > '2016-03-18'
travaille pour moi et'2014-04-18' > '2018-02-01'
revientFALSE
. Oui, c'est une comparaison de chaînes, mais étant donné le format de chaîne, cela devrait fonctionner. Après tout'1' < '2'
,.'0001' < '2'
.Réponses:
Je fais beaucoup de conditions comme ça dans les requêtes d'entité, je n'ai pas encore rencontré de problème.
La principale chose à savoir est le fuseau horaire dans lequel les données sont stockées, c'est-à-dire UTC. Vous devez le convertir en fuseau horaire de stockage (il y a une constante pour cela), ou votre requête sera désactivée de quelques heures.
Voici un exemple basé sur quelque chose que je fais.Si vous ne stockez que des jours, il existe également une constante pour le formatage.
la source
2016-07-18T13:00:00
, mais Drupal a correctement géré la conversion et la comparaison en utilisant cette configuration.