Mungkin saya melewatkan sesuatu, tetapi dengan tipe DATETIME, solusi CURDATE () tidak berfungsi. Ini tidak.
Jahmic
ditambah ini membutuhkan banyak waktu karena ada overhead mengkonversi DATETIME to date melalui fungsi DATE () dan kemudian membandingkan dengan kondisi di mana.
roopunk
Jangan gunakan fungsi pada kolom, itu membuat kueri mengabaikan indeks, menyebabkan permintaan lambat. Periksa jawaban saya untuk pendekatan alternatif stackoverflow.com/a/42365426/4311336
maksud saya hari ini bukan sekarang: D yang saya butuhkan hari ini seperti 2011-03-03 bukan 2011-03-03 14:02:02
n00b
@ n00b: akan mengembalikan baris lebih besar dari hari ini jangan khawatir jika waktunya termasuk
Shakti Singh
3
katakanlah ini 2011-02-02 14:02:02 - pengguna yang telah dibuat pada 10:02:02 tidak akan dikembalikan dalam versi Anda meskipun mereka dibuat "hari ini" :)
n00b
@ n00b: Lol ya, tidak ada pengguna yang akan kembali, kalau saja kita bisa menghentikan waktu.
Mike Purcell
15
Jika 'dibuat' adalah tipe datetime
SELECT*FROM users WHERE created < DATE_ADD(CURDATE(), INTERVAL 1 DAY);
Jika kolom memiliki indeks dan fungsi diterapkan pada kolom maka indeks tidak berfungsi dan pemindaian tabel penuh terjadi, menyebabkan permintaan sangat lambat.
Untuk menggunakan indeks dan membandingkan datetime dengan hari ini / tanggal saat ini, berikut ini dapat digunakan.
Solusi untuk OP:
select*from users
where created > CONCAT(CURDATE(),' 23:59:59')
Contoh untuk mendapatkan data hari ini:
select*from users
where
created >= CONCAT(CURDATE(),' 00:00:00')AND
created <= CONCAT(CURDATE(),' 23:59:59')
Atau gunakan ANTARA singkatnya
select*from users
where created BETWEEN
CONCAT(CURDATE(),' 00:00:00')AND CONCAT(CURDATE(),' 23:59:59')
CURDATE()
kembalikan hanya tanggal bukan waktuBaca lebih lanjut: http://www.tomjepson.co.uk/tutorials/36/mysql-select-where-date-today.html
sumber
jika kolom adalah tipe datetime.
sumber
Jika 'dibuat' adalah tipe datetime
CURDATE () juga berarti '2013-05-09 00:00:00'
sumber
Jawaban yang ditandai menyesatkan. Pertanyaannya adalah
DateTime
, tetapi menyatakan apa yang dibutuhkan itu adilCURDATE()
.Jawaban terpendek dan tepat untuk ini adalah:
sumber
Jika kolom memiliki indeks dan fungsi diterapkan pada kolom maka indeks tidak berfungsi dan pemindaian tabel penuh terjadi, menyebabkan permintaan sangat lambat.
Untuk menggunakan indeks dan membandingkan datetime dengan hari ini / tanggal saat ini, berikut ini dapat digunakan.
Solusi untuk OP:
Contoh untuk mendapatkan data hari ini:
Atau gunakan ANTARA singkatnya
sumber
sumber
Kode di bawah ini berfungsi untuk saya.
sumber
json_date ["05/11/2011"]
sumber
Anda dapat mengembalikan semua baris dan daripada menggunakan fungsi php Dateiff di dalam pernyataan if, meskipun itu akan menambah beban server.
sumber