En Drupal 8, el campo Fecha solamente almacena datos en una columna varchar en formato CCYY -MM-DD , por ejemplo, 2016-04-18 .
Como tal, ya no puede simplemente hacer un mayor que ( > = ), menor que ( <= ) o una entidad de consulta basada en marca de tiempo similar.
¿Hay una solución simple sobre cómo lidiar con esto? Específicamente, estoy intentando hacer dos consultas, una donde el campo de fecha tiene entre 14 y 21 días de antigüedad, y una donde el campo de fecha tiene 21 años o más.
>=
funciona 20160318> = 20160218XXXX-XX-XX
(2016-04-18), por lo que técnicamente no es un número, por lo tanto, hacer una condición numérica no sería válido.'2016-04-18' > '2016-03-18'
funciona para mí y'2014-04-18' > '2018-02-01'
vuelveFALSE
. Sí, es una comparación de cadenas, pero dado el formato de cadena, debería funcionar. Después de todo,'1' < '2'
.'0001' < '2'
, quizás.Respuestas:
Estoy haciendo muchas condiciones como esa en consultas de entidades, aún no he encontrado un problema.
Lo principal que debe tener en cuenta es la zona horaria en la que se almacenan los datos, que es UTC. Debe convertirlo a la zona horaria de almacenamiento (hay una constante para eso), o su consulta se desactivará por unas horas.
Aquí hay un ejemplo basado en algo que estoy haciendo, si solo almacena días, entonces hay una constante para formatear eso también.
fuente
2016-07-18T13:00:00
, pero Drupal manejó la conversión y la comparación correctamente usando esta configuración.