В Drupal 8 поле « Только дата» хранит данные в столбце varchar в формате CCYY-MM-DD , например, 2016-04-18 .
Таким образом, вы больше не можете просто делать больше, чем ( > = ), меньше, чем ( <= ) или аналогичную основанную на отметке времени entityQuery.
Есть ли простое решение о том, как с этим бороться? В частности, я пытаюсь сделать два запроса, один, где поле даты от 14 до 21 дней, и один, где поле даты 21 и более дней назад.
>=
работает? 20160318> = 20160218XXXX-XX-XX
(2016-04-18), поэтому технически это не число, поэтому выполнение числовых условий для них не будет действительным.'2016-04-18' > '2016-03-18'
у меня работает и'2014-04-18' > '2018-02-01'
возвращаетсяFALSE
. Да, это сравнение строк, но учитывая формат строки, оно должно работать. В конце концов'1' < '2'
.'0001' < '2'
,Ответы:
Я выполняю множество подобных условий в запросах сущностей, но еще не столкнулся с проблемой.
Главное, что вы должны знать, это часовой пояс, в котором хранятся данные, это UTC. Вам нужно преобразовать его во временную зону хранилища (для этого есть константа), иначе ваш запрос будет отключен через несколько часов.
Вот пример, основанный на том, что я делаю, если вы храните только дни, то есть константа для форматирования.
источник
2016-07-18T13:00:00
, но Drupal правильно обработал преобразование и сравнение, используя эту настройку.