No Drupal 8, o campo Data apenas armazena dados em uma coluna varchar no formato CCYY-MM-DD , por exemplo, 18/04/2016 .
Dessa forma, você não pode simplesmente fazer mais uma entidadeQuery maior que ( > = ), menor que ( <= ) ou carimbo de data / hora semelhante.
Existe uma solução simples sobre como lidar com isso? Especificamente, estou tentando fazer duas consultas, uma em que o campo de data tenha entre 14 e 21 dias e uma em que o campo de data tenha 21 e mais dias.
>=
funciona? 20160318> = 20160218XXXX-XX-XX
(18/04/2016), portanto, tecnicamente, não é um número, portanto, fazer uma condição numérica contra eles não seria válido.'2016-04-18' > '2016-03-18'
funciona para mim e'2014-04-18' > '2018-02-01'
retornaFALSE
. Sim, é uma comparação de cadeias, mas, dado o formato da cadeia, deve funcionar. Afinal'1' < '2'
,.'0001' < '2'
, talvez.Respostas:
Estou fazendo muitas condições como essa nas consultas de entidade, ainda não encontrei um problema.
A principal coisa que você deve estar ciente é o fuso horário em que os dados são armazenados, que são UTC. Você precisa convertê-lo para o fuso horário de armazenamento (existe uma constante para isso), ou sua consulta será desativada em algumas horas.
Aqui está um exemplo baseado em algo que estou fazendo, se você armazenar apenas dias, também há uma constante para formatar isso.
fonte
2016-07-18T13:00:00
, mas Drupal lidou com a conversão e a comparação corretamente usando essa configuração.