Pengiraan Umur Tepat dalam SQL Server menggunakan Tarikh Lahir
SQL Server menawarkan kaedah yang cekap untuk mengira umur dari tarikh lahir. Fungsi CAST()
sedia menukar rentetan tarikh lahir kepada jenis data DATE
/DATETIME
, membolehkan pelbagai pengiraan tarikh, termasuk penentuan umur.
Pertimbangkan data sampel ini:
ID | Name | DOB |
---|---|---|
1 | John | 1992-01-09 00:00:00 |
2 | Sally | 1959-05-20 00:00:00 |
Pengiraan Umur dengan DATEDIFF()
Fungsi DATEDIFF()
mengira perbezaan antara dua tarikh. Menggabungkannya dengan GETDATE()
(yang menyediakan tarikh dan masa semasa), kita boleh menentukan umur dalam pelbagai unit:
<code class="language-sql">SELECT ID, Name, DATEDIFF(hour, DOB, GETDATE()) AS AgeInHours, CONVERT(int, ROUND(DATEDIFF(day, DOB, GETDATE()) / 365.25, 0)) AS AgeYearsApprox FROM table_name;</code>
Ini menghasilkan anggaran umur dalam tahun, merangkumi purata bilangan hari dalam setahun (365.25). Kaedah yang lebih tepat diperlukan untuk hasil yang tepat.
Kaedah Pengiraan Umur Dipertingkat
Untuk ketepatan yang lebih tinggi, terutamanya apabila mempertimbangkan tahun lompat, pendekatan yang lebih canggih disyorkan.
Umur Integer:
Kaedah ini menyediakan umur sepanjang tahun:
<code class="language-sql">SELECT ID, Name, (YEAR(GETDATE()) - YEAR(DOB)) - CASE WHEN MONTH(GETDATE()) < MONTH(DOB) OR (MONTH(GETDATE()) = MONTH(DOB) AND DAY(GETDATE()) < DAY(DOB)) THEN 1 ELSE 0 END AS AgeYearsInt FROM table_name;</code>
Umur Perpuluhan (Lebih Tepat):
Pengiraan ini menawarkan umur yang lebih tepat, termasuk tahun pecahan:
<code class="language-sql">SELECT ID, Name, DATEDIFF(year, DOB, GETDATE()) + CASE WHEN DATEADD(year, DATEDIFF(year, DOB, GETDATE()), DOB) > GETDATE() THEN -1 ELSE 0 END AS AgeYearsDecimal FROM table_name;</code>
Kaedah yang dipertingkatkan ini memberikan pengiraan umur yang lebih tepat, mengendalikan kerumitan tahun lompat dan perbezaan hari dalam tahun untuk hasil yang lebih dipercayai. Pilih kaedah yang paling sesuai dengan keperluan ketepatan anda.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Umur dengan Tepat dalam SQL Server Menggunakan Tarikh Lahir?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!