Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Umur dari Tarikh Lahir Menggunakan getDate() SQL?
Gunakan fungsi getDate() SQL untuk mengira umur berdasarkan tarikh lahir
Soalan:
Banyak pangkalan data mengekalkan maklumat peribadi, termasuk tarikh lahir. Untuk menjejak umur dengan tepat untuk pengurusan rekod, tarikh lahir yang disimpan perlu ditukar kepada umur individu dalam tahun.
Penyelesaian:
Tukar tarikh rentetan kepada jenis data tarikh:
<code class="language-sql">CONVERT(datetime, DOB)</code>
Kira umur dalam tahun:
<code class="language-sql">DATEDIFF(hour, CONVERT(datetime, DOB), getDate())</code>
<code class="language-sql">DATEDIFF(hour, CONVERT(datetime, DOB), getDate()) / 8766.0</code>
Output:
<code class="language-sql">SELECT ID, Name, DATEDIFF(hour, CONVERT(datetime, DOB), getDate()) / 8766.0 AS AGE, DOB FROM [YourTable];</code>
Pertimbangan ketepatan:
Tahun lompat dan pengiraan tarikh yang tepat akan menjejaskan ketepatan. Untuk meningkatkan ketepatan, pertimbangkan perkara berikut:
Cara terbaik untuk mengira umur dalam nombor bulat:
<code class="language-sql">(CONVERT(int, CONVERT(char(8), @Now, 112)) - CONVERT(char(8), @Dob, 112)) / 10000</code>
Cara terbaik untuk mengira umur sebagai perpuluhan:
<code class="language-sql">1.0 * DATEADD(yy, @Dob, @Now) + CASE WHEN @Now >= DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)) THEN -- 当年生日已过 (1.0 * DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)), @Now) / DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), 1, 1), DATEFROMPARTS(YEAR(@Now) + 1, 1, 1)) ) ELSE -- 当年生日未过 -1 * ( -1.0 * DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)), @Now) / DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), 1, 1), DATEFROMPARTS(YEAR(@Now) + 1, 1, 1)) ) END</code>
Atas ialah kandungan terperinci Bagaimana untuk Mengira Umur dari Tarikh Lahir Menggunakan getDate() SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!