Dalam Drupal 8, bidang Date only menyimpan data dalam kolom varchar dalam format CCYY-MM-DD , misalnya, 2016-04-18 .
Dengan demikian, Anda tidak bisa lagi melakukan lebih dari ( > = ), lebih sedikit dari ( <= ) atau entitas lain berdasarkan timestamp lagi.
Apakah ada solusi sederhana tentang cara menghadapinya? Secara khusus saya mencoba melakukan dua kueri, satu di mana bidang tanggal adalah antara 14 dan 21 hari, dan satu di mana bidang tanggal adalah 21 dan lebih hari.
>=
bekerja 20160318> = 20160218XXXX-XX-XX
(2016-04-18), jadi secara teknis bukan angka, oleh karena itu melakukan kondisi numerik terhadapnya tidak akan valid.'2016-04-18' > '2016-03-18'
bekerja untuk saya, dan'2014-04-18' > '2018-02-01'
kembaliFALSE
. Ya, ini adalah perbandingan string, tetapi mengingat format string, itu harus berfungsi. Lagipula'1' < '2'
,.'0001' < '2'
, mungkin.Jawaban:
Saya melakukan banyak kondisi seperti itu dalam query entitas, saya belum mengalami masalah.
Hal utama yang harus Anda perhatikan adalah zona waktu data disimpan, yaitu UTC. Anda perlu mengubahnya ke zona waktu penyimpanan (ada konstanta untuk itu), atau permintaan Anda akan dimatikan beberapa jam.
Berikut ini contoh berdasarkan sesuatu yang saya lakukan, jika Anda hanya menyimpan hari, maka ada konstanta untuk memformatnya juga.
sumber
2016-07-18T13:00:00
, tetapi Drupal menangani konversi dan perbandingan dengan benar menggunakan pengaturan ini.