」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何從SQL Server的出生日期開始準確計算年齡?

如何從SQL Server的出生日期開始準確計算年齡?

發佈於2025-03-23
瀏覽:849

How to Accurately Calculate Age in Years from a Date of Birth in SQL Server?

精確計算SQL Server中出生日期的年齡

問題:

如何在SQL Server中將存儲為nvarchar(25)的出生日期轉換為日期,並隨後計算其對應的年齡(以年為單位)?

示例數據:

ID Name DOB
1 John 1992-01-09 00:00:00
2 Sally 1959-05-20 00:00:00

預期輸出:

ID Name AGE DOB
1 John 31 1992-01-09 00:00:00
2 Sally 64 1959-05-20 00:00:00

答案:精確計算年齡

最初提出的方法在考慮閏年和月份天數不規則性方面面臨挑戰。現代SQL Server版本為我們提供了改進的技術來解決這些複雜性。

計算整數年齡的最佳方法:

此方法簡單直接,但精度可能略低於小數方法。

SELECT
    (YEAR(GETDATE()) - YEAR(DOB)) - CASE WHEN MONTH(GETDATE()) 

計算小數年齡的最佳方法:

此方法使用DATEDIFF函數和CASE語句精確計算年齡,並考慮生日在當年是否已過。

SELECT
    DATEDIFF(year, DOB, GETDATE()) - CASE WHEN MONTH(GETDATE()) 

請注意,以上代碼假設DOB列已轉換為DATE類型。 如果DOB仍然是nvarchar(25)類型,您需要在查詢中添加類型轉換,例如:CONVERT(DATE, DOB, 120)。 選擇合適的轉換樣式取決於您的DOB數據的具體格式。 例如,CONVERT(DATE, DOB, 120)適用於'yyyy-mm-dd hh:mi:ss'格式。 您可能需要調整此部分以適應您的數據格式。 最終的查詢應類似於:

SELECT
    DATEDIFF(year, CONVERT(DATE, DOB, 120), GETDATE()) - CASE WHEN MONTH(GETDATE()) 

替換YourTable為您的表名。 選擇整數或小數方法取決於您的精度需求。 小數方法更精確,但整數方法更簡潔。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3