Pertanyaan berikut:
SELECT * FROM `objects`
WHERE (date_field BETWEEN '2010-09-29 10:15:55' AND '2010-01-30 14:15:55')
tidak mengembalikan apa pun.
Saya harus memiliki lebih dari cukup data untuk agar kueri berfungsi. Apa yang saya lakukan salah?
min
dan keduanyamax
dianggap berada dalam kisaran, untuk tidak memproses dua kali tanggal yang merupakan nilaimin
danmax
(kasus tepi). Misalnya, tanggalnya2010-09-29 00:00:00
akan antara2010-09-28 00:00:00
dan2010-09-29 00:00:00
, DAN JUGA antara2010-09-29 00:00:00
dan2010-09-30 00:00:00
Jawaban:
Tanggal kedua Anda sebelum tanggal pertama Anda (mis. Anda menanyakan antara 29 September 2010 dan 30 Januari 2010). Coba balikkan urutan tanggal:
sumber
where
klausa harus bekerja padaselect
atauupdate
pernyataan yang sama.Kueri Anda harus memiliki tanggal sebagai
mencoba
sumber
Apakah
date_field
tipedatetime
? Anda juga harus menempatkan tanggal eariler terlebih dahulu.Harus:
sumber
DATE () adalah fungsi MySQL yang mengekstrak hanya bagian tanggal dari tanggal atau ekspresi tanggal / waktu
sumber
Sebagai ekstensi untuk jawaban dari @sabin dan sebuah petunjuk jika seseorang ingin membandingkan bagian tanggal saja (tanpa waktu):
Jika bidang untuk dibandingkan adalah dari tipe datetime dan hanya tanggal yang ditentukan untuk perbandingan, maka tanggal ini secara internal dikonversi ke nilai datetime . Ini berarti permintaan berikut
akan dikonversi menjadi
secara internal.
Ini pada gilirannya mengarah ke hasil yang tidak termasuk objek dari 2010-09-29 dengan nilai waktu lebih besar dari 00:00:00!
Dengan demikian, jika semua objek dengan tanggal 2010-09-29 harus disertakan juga, bidang untuk membandingkan harus dikonversi ke tanggal:
sumber
Anda dapat melakukannya secara manual, dengan membandingkan dengan lebih dari atau sama dan kurang dari atau sama.
Dalam contoh kita, kita perlu mengambil data dari hari tertentu ke hari. Kami akan membandingkan dari awal hari ke detik terakhir di hari lain.
sumber
Mungkin ada masalah dengan konfigurasi tanggal di sisi server atau di sisi klien. Saya menemukan ini menjadi masalah umum pada banyak basis data ketika tuan rumah dikonfigurasikan dalam bahasa Spanyol, Perancis atau apa pun ... yang dapat memengaruhi format dd / mm / yyyy atau mm / dd / yyyy.
sumber
Hanya Cast date_field sebagai tanggal
sumber
Saat menggunakan nilai Tanggal dan Waktu, Anda harus memberikan kolom sebagai
DateTime
dan bukanDate
. Coba:sumber
Coba alihkan tanggalnya:
sumber