Pengiraan umur yang tepat dalam SQL, berdasarkan tarikh lahir, memerlukan lajur tarikh lahir daripada jenis data datetime
atau date
yang sah. Jika lajur tarikh lahir anda pada masa ini nvarchar(25)
, anda mesti menukarnya terlebih dahulu kepada format tarikh yang sesuai.
Dengan mengandaikan penukaran ini selesai, mari kita periksa kaedah pengiraan umur yang berkesan:
Kaedah 1: Pendekatan Ringkas (Anggaran)
Kaedah ini menggunakan DATEDIFF
untuk mencari perbezaan jam antara tarikh semasa dan tarikh lahir, kemudian bahagikan dengan anggaran bilangan jam dalam setahun (8766.0):
<code class="language-sql">SELECT DATEDIFF(hour, @dob, GETDATE())/8766.0 AS AgeYearsDecimal</code>
Ini menghasilkan umur perpuluhan, tetapi ketepatannya terhad disebabkan oleh variasi dalam bilangan hari setiap bulan dan tahun lompat.
Kaedah yang Diperbaiki dan Lebih Tepat:
Pengiraan Umur Integer:
Kaedah ini mengira umur dalam keseluruhan tahun:
<code class="language-sql">SELECT (CONVERT(int,CONVERT(char(8),@Now,112))-CONVERT(char(8),@Dob,112))/10000 AS AgeIntYears</code>
Pengiraan Umur Perpuluhan Tepat:
Untuk umur perpuluhan yang lebih tepat, kaedah yang dipertingkatkan ini disyorkan:
<code class="language-sql">SELECT 1.0* DateDiff(yy,@Dob,@Now) +CASE WHEN @Now >= DATEFROMPARTS(DATEPART(yyyy,@Now),DATEPART(m,@Dob),DATEPART(d,@Dob)) THEN ( 1.0 * DATEDIFF(day,DATEFROMPARTS(DATEPART(yyyy,@Now),DATEPART(m,@Dob),DATEPART(d,@Dob)),@Now) / DATEDIFF(day,DATEFROMPARTS(DATEPART(yyyy,@Now),1,1),DATEFROMPARTS(DATEPART(yyyy,@Now)+1,1,1)) ) ELSE -1 * ( * DATEDIFF(day,DATEFROMPARTS(DATEPART(yyyy,@Now),DATEPART(m,@Dob),DATEPART(d,@Dob)),@Now) / DATEDIFF(day,DATEFROMPARTS(DATEPART(yyyy,@Now),1,1),DATEFROMPARTS(DATEPART(yyyy,@Now)+1,1,1)) ) END AS AgeYearsDecimal</code>
Kaedah lanjutan ini merangkumi tahun lompat dan memberikan perwakilan perpuluhan umur dalam tahun yang sangat tepat. Ia merupakan kaedah pilihan untuk situasi yang memerlukan pengiraan umur yang tepat.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Umur dengan Tepat dalam Tahun dari Tarikh Lahir Menggunakan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!