Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Perbezaan Umur dalam Tahun sebagai Integer dalam MySQL?
Mengira Perbezaan Umur dalam Tahun sebagai Integer dalam MySQL
Menentukan umur seseorang dalam pangkalan data memberikan sedikit cabaran apabila berurusan dengan pengiraan umur . Pertimbangkan jadual 'pelajar' dengan lajur 'id' dan 'birth_date'.
Untuk mengira umur dalam hari, ungkapan datediff(curdate(),birth_date) boleh digunakan, tetapi ini mengembalikan nilai floating-point . Membahagikan dengan 365 menghasilkan nilai mata terapung juga.
Mengira tahun sebagai tahun(kudat())-tahun(tarikh_lahir) juga memperkenalkan masalah. Contohnya, jika seseorang dilahirkan pada bulan Jun 1970 dan tarikh semasa adalah pada bulan Mei, ungkapan itu akan salah mengembalikan 32 tahun dan bukannya 31.
Penyelesaian Alternatif untuk Perbezaan Tahun Integer:
Untuk menangani isu ini, pertimbangkan pernyataan SQL berikut:
<code class="sql">SELECT TIMESTAMPDIFF(YEAR, date_of_birth, CURDATE()) AS difference FROM student</code>
Ungkapan ini mengira perbezaan antara 'tarikh_kelahiran' dan 'CURDATE()' dalam tahun, menghasilkan nilai integer.
Sambungan untuk Bulan dan Hari:
Untuk mengira perbezaan dalam bulan, gantikan 'TAHUN' dengan 'BULAN' dalam ungkapan:
<code class="sql">SELECT TIMESTAMPDIFF(MONTH, date_of_birth, CURDATE()) AS difference FROM student</code>
Begitu juga, untuk perbezaan hari, gantikan 'TAHUN' dengan 'HARI':
<code class="sql">SELECT TIMESTAMPDIFF(DAY, date_of_birth, CURDATE()) AS difference FROM student</code>
Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Umur dalam Tahun sebagai Integer dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!