使用SQL的getDate()函數依出生日期計算年齡
問題:
許多資料庫維護個人信息,包括出生日期。為了準確追蹤記錄管理的年齡,需要將儲存的出生日期轉換為個人的年齡(以年為單位)。
解:
將字串日期轉換為日期資料型態:
CONVERT(datetime, DOB)
計算年齡(以年為單位):
DATEDIFF(hour, CONVERT(datetime, DOB), getDate())
DATEDIFF(hour, CONVERT(datetime, DOB), getDate()) / 8766.0
輸出:
SELECT ID, Name, DATEDIFF(hour, CONVERT(datetime, DOB), getDate()) / 8766.0 AS AGE, DOB FROM [YourTable];
精準度考量:
閏年和精確日期計算會影響精確度。為了提高精度,請考慮以下方法:
計算整數年齡的最佳方法:
(CONVERT(int, CONVERT(char(8), @Now, 112)) - CONVERT(char(8), @Dob, 112)) / 10000
計算小數年齡的最佳方法:
1.0 * DATEADD(yy, @Dob, @Now) + CASE WHEN @Now >= DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)) THEN -- 当年生日已过 (1.0 * DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)), @Now) / DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), 1, 1), DATEFROMPARTS(YEAR(@Now) + 1, 1, 1)) ) ELSE -- 当年生日未过 -1 * ( -1.0 * DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)), @Now) / DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), 1, 1), DATEFROMPARTS(YEAR(@Now) + 1, 1, 1)) ) END
以上是如何使用 SQL 的 getDate() 根據出生日期計算年齡?的詳細內容。更多資訊請關注PHP中文網其他相關文章!