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):
SELECT DATEDIFF(hour, @dob, GETDATE())/8766.0 AS AgeYearsDecimal
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:
SELECT (CONVERT(int,CONVERT(char(8),@Now,112))-CONVERT(char(8),@Dob,112))/10000 AS AgeIntYears
Pengiraan Umur Perpuluhan Tepat:
Untuk umur perpuluhan yang lebih tepat, kaedah yang dipertingkatkan ini disyorkan:
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
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!