Cara Memilih Baris dengan Cap Masa Hari Semasa
Dalam sistem pengurusan pangkalan data, adalah perkara biasa untuk menyimpan cap masa untuk rekod data dijejaki apabila ia berada dicipta atau diubah suai. Walau bagaimanapun, apabila anda perlu mendapatkan semula data daripada jadual dengan cap masa, anda mungkin menghadapi cabaran dalam memilih rekod berdasarkan tarikh tertentu.
Pernyataan Masalah
Anda mempunyai pangkalan data jadual dengan lajur cap masa dan anda hanya mahu mengambil semula rekod yang telah dibuat pada hari semasa. Anda pada mulanya menggunakan pertanyaan di bawah tetapi mendapati ia mengembalikan rekod selama 24 jam yang lalu, bukan hanya tarikh hari ini:
SELECT * FROM `table` WHERE (`timestamp` > DATE_SUB(now(), INTERVAL 1 DAY));
Penyelesaian
Untuk memilih baris yang mempunyai cap masa hari semasa sambil mengabaikan masa, anda boleh menggunakan pertanyaan berikut:
SELECT * FROM `table` WHERE DATE(`timestamp`) = CURDATE()
Amaran:
Walaupun pertanyaan ini mencapai hasil yang anda inginkan, ia mungkin tidak melaksanakan secara optimum. Menggunakan DATE() pada lajur cap masa boleh menghalang MySQL daripada menggunakan mana-mana indeks dengan cekap pada lajur itu.
Untuk penyelesaian yang lebih cekap, anda boleh mencipta lajur tarikh khusus dan menyimpan bahagian tarikh cap masa dalam lajur itu . Ini membolehkan MySQL menggunakan indeks pada lajur tarikh untuk pertanyaan yang lebih pantas.
Berikut ialah contoh cara anda boleh mencipta lajur tarikh khusus dan mengemas kini nilainya:
ALTER TABLE `table` ADD COLUMN `date` DATE NOT NULL; UPDATE `table` SET `date` = DATE(`timestamp`);
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod dengan Cap Waktu Hari Ini dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!