Mengira Perbezaan Umur dalam MySQL sebagai Integer
Menentukan umur individu dalam pangkalan data boleh menimbulkan cabaran apabila berurusan dengan pengiraan tarikh. Fungsi terbina dalam MySQL DATEDIFF mengira perbezaan antara dua tarikh dalam hari, memerlukan pemprosesan lanjut untuk mendapatkan umur dalam tahun.
Satu pendekatan melibatkan membahagikan perbezaan hari dengan 365, tetapi ini menghasilkan titik terapung nilai. Untuk mendapatkan integer, komponen tahun tarikh semasa dan tarikh lahir boleh ditolak:
SELECT id, year(curdate())-year(birth_date) FROM student
Walau bagaimanapun, pendekatan ini menghadapi isu apabila umur yang dikira dimatikan selama satu tahun untuk individu yang lahir selepas bulan semasa . Sebagai contoh, seseorang yang lahir pada Jun 1970 akan dianggap berumur 32 tahun menggunakan kaedah ini walaupun mereka baru berusia 31 tahun dan lima bulan.
Resolusi:
Kepada menangani isu ini, MySQL menyediakan fungsi TIMESTAMPDIFF, yang menawarkan pendekatan yang lebih tepat untuk mengira perbezaan umur. Pertanyaan berikut menggunakan TIMESTAMPDIFF:
SELECT TIMESTAMPDIFF(YEAR, date_of_birth, CURDATE()) AS difference FROM student
Dengan menggantikan TAHUN dengan BULAN atau HARI, perbezaan umur boleh dikira dalam bulan atau hari, masing-masing. Kaedah ini berkesan mengendalikan senario di mana umur dimatikan sebanyak satu unit pada bulan tertentu.
Atas ialah kandungan terperinci Bagaimana Mengira Perbezaan Umur dengan Tepat dalam Tahun Menggunakan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!