Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Umur dengan Tepat dalam SQL Server Menggunakan Tarikh Lahir?

Bagaimana untuk Mengira Umur dengan Tepat dalam SQL Server Menggunakan Tarikh Lahir?

Barbara Streisand
Barbara Streisandasal
2025-01-22 13:26:09460semak imbas

How to Accurately Calculate Age in SQL Server Using Date of Birth?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn