Saya mencoba menjalankan pernyataan pilih mysql yang terlihat pada tanggal hari ini dan hanya mengembalikan hasil yang terdaftar pada hari ini. Saat ini saya mencoba yang berikut ini, tetapi sepertinya tidak berhasil.
SELECT users.id, DATE_FORMAT(users.signup_date, '%Y-%m-%d')
FROM users
WHERE users.signup_date = CURDATE()
Saya telah mengubah SELECT
pernyataan saya menjadi ini, terima kasih teman-teman.
SELECT id FROM users WHERE DATE(signup_date) = CURDATE()
signup_date
adalah bidang waktusignup_date
jika berisi waktu, maka Anda akan ingin menggunakan date_format dalamWHERE
klausa untuk menghapus waktu agar cocok denganCURDATE()
mysql_num_rows
tidak menampilkan 0. Hanya kosong.Jawaban:
sumber
DATETIME
.signup_date
, meskipun indeks seperti itu ada). Lebih suka solusi Serjio .< '2017-08-31 00:00:00'
jika Anda menggunakan versi MySQL dengan milidetik.Kueri ini akan menggunakan indeks jika Anda memilikinya untuk
signup_date
bidangsumber
signup_date
, tidak seperti pendekatan lain.signup_date
antara dua waktu adalah benar, tetapi waktunya tidak. Ini harus antara00:00
dan23:59:59
pada tanggal sekarang.WHERE DATE(signup_date) = CURDATE()
mengambil server saya ~ 50 ms, ini satu di sini 0,8 ms.Sepertinya Anda perlu menambahkan pemformatan ke
WHERE
:Lihat SQL Fiddle dengan Demo
sumber
Anda dapat menggunakan
CONCAT
denganCURDATE()
sepanjang hari dan kemudian memfilter dengan menggunakan kondisiBETWEEN
dalamWHERE
:sumber