Mengira Umur sebagai Integer dalam MySQL
Apabila menentukan umur individu berdasarkan tarikh lahir mereka yang disimpan dalam pangkalan data MySQL, perbezaan hari yang disediakan oleh fungsi DATEDIFF() tidak dapat memberikan perwakilan integer yang tepat. Untuk mengatasi cabaran ini, pendekatan pelbagai langkah diperlukan.
Langkah 1: Kira Tahun
Ungkapan YEAR(CURDATE()) - YEAR(birth_date) menghasilkan perbezaan tahun antara tarikh semasa dan tarikh lahir. Walau bagaimanapun, pendekatan ini tidak mengambil kira tahun yang tidak lengkap. Sebagai contoh, jika tarikh semasa ialah Mei tetapi tarikh lahir adalah Jun, umur individu masih 31.
Langkah 2: Betulkan untuk Tahun Tidak Lengkap
Untuk menangani isu tahun yang tidak lengkap, subkueri berikut boleh digunakan:
(SELECT FLOOR((DAYOFYEAR(CURDATE()) - DAYOFYEAR(birth_date)) / 365.25))
Subkueri ini mengira bilangan tahun dan hari berlalu sejak tarikh lahir individu, dengan mengambil kira tahun lompat.
Langkah 3: Gabungkan Keputusan
Ungkapan terakhir untuk mengira umur sebagai integer ialah:
(YEAR(CURDATE()) - YEAR(birth_date)) - (SELECT FLOOR((DAYOFYEAR(CURDATE()) - DAYOFYEAR(birth_date)) / 365.25))
Ungkapan ini menolak tahun yang tidak lengkap daripada bilangan tahun penuh, terhasil dalam integer yang mewakili umur individu.
Penyelesaian Alternatif
Pilihan lain untuk mengira umur sebagai integer dalam MySQL ialah menggunakan fungsi TIMESTAMPDIFF():
SELECT TIMESTAMPDIFF(YEAR, date_of_birth, CURDATE()) AS difference FROM student
Fungsi ini mengira secara langsung perbezaan tahun antara dua cap waktu, mengelakkan keperluan untuk pengiraan yang rumit. Ia juga boleh digunakan untuk mengira perbezaan dalam bulan atau hari dengan menggantikan TAHUN dengan BULAN atau HARI.
Atas ialah kandungan terperinci Bagaimana Mengira Umur dengan Tepat sebagai Integer dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!