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