在 SQL Server 中使用出生日期精確計算年齡
SQL Server 提供了根據出生日期計算年齡的有效方法。 CAST()
函數可以輕鬆地將出生日期字串轉換為 DATE
/DATETIME
資料類型,從而實現各種日期計算,包括年齡確定。
考慮這個範例資料:
ID | Name | DOB |
---|---|---|
1 | John | 1992-01-09 00:00:00 |
2 | Sally | 1959-05-20 00:00:00 |
使用DATEDIFF()
DATEDIFF()
函數計算兩個日期之間的差異。 將其與GETDATE()
(提供當前日期和時間)結合起來,我們可以確定各種單位的年齡:
<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>
這會產生以年為單位的近似年齡,佔一年中的平均天數 (365.25)。 需要更精確的方法才能獲得準確的結果。
增強的年齡計算方法
為了獲得更高的準確性,特別是在考慮閏年時,建議使用更複雜的方法。
整數年齡:
此方法提供整歲數的年齡:
<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>
十進制年齡(更精確):
此計算提供了更精確的年齡,包括小數年:
<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>
這些改進的方法提供了更準確的年齡計算,處理閏年和年份差異的複雜性,以獲得更可靠的結果。 選擇最適合您精度要求的方法。
以上是如何在SQL Server中使用出生日期準確計算年齡?的詳細內容。更多資訊請關注PHP中文網其他相關文章!