Saya ingin mengembalikan semua catatan yang ditambahkan ke database dalam 30 hari terakhir. Saya perlu mengubah tanggal menjadi bb / hh / tt karena tujuan tampilan.
create_date between DATE_FORMAT(curdate(),'%m/%d/%Y') AND (DATE_FORMAT(curdate() - interval 30 day,'%m/%d/%Y'))
Pernyataan saya gagal membatasi catatan hingga 30 hari terakhir - ini memilih semua catatan.
Adakah yang bisa mengarahkan saya ke arah yang benar? Rasanya aku sudah dekat.
Terima kasih dan semoga minggu Anda menyenangkan.
sumber
DATE_FORMAT(create_date, '%m/%d/%Y')
... WHERE create_date BETWEEN (NOW() - INTERVAL 30 DAY) AND NOW()
DATE_FORMAT
mengembalikan sebuah string, jadi Anda menggunakan dua string dalamBETWEEN
klausa Anda , yang tidak akan berfungsi seperti yang Anda harapkan.Sebaliknya, ubah tanggal ke format Anda di
SELECT
dan lakukanBETWEEN
untuk tanggal sebenarnya. Sebagai contoh,sumber
Anda juga dapat menulis ini di mysql -
TETAP
sumber
Untuk aktivitas tanggal saat ini dan aktivitas lengkap untuk 30 hari sebelumnya gunakan ini, karena SYSDATE adalah variabel di hari sebelumnya 30 hari tidak akan memiliki seluruh data untuk hari itu.
sumber
Berikut solusi tanpa menggunakan
curdate()
fungsi, ini adalah solusi bagi yang menggunakanTSQL
saya kirasumber