在MySQL 中將年齡計算為整數
根據儲存在MySQL 資料庫中的出生日期確定個人的年齡時, DATEDIFF()函數提供的天數差異無法提供準確的整數表示。為了克服這項挑戰,需要採取多步驟方法。
第 1 步:計算年份
表達式 YEAR(CURDATE()) - YEAR(birth_date)產生當前日期和出生日期之間的年差。然而,這種方法並沒有考慮到不完整的年份。例如,如果當前日期是 5 月,但出生日期是 6 月,則該人的年齡仍為 31 歲。
第2 步:修正不完整的年份
要解決對於不完整的年份問題,可以使用以下子查詢:
(SELECT FLOOR((DAYOFYEAR(CURDATE()) - DAYOFYEAR(birth_date)) / 365.25))
此子查詢計算自個人出生日期以來經過的年數和天數,並考慮閏年。
第3 步:合併結果
將年齡計算為整數的最終表達式為:
(YEAR(CURDATE()) - YEAR(birth_date)) - (SELECT FLOOR((DAYOFYEAR(CURDATE()) - DAYOFYEAR(birth_date)) / 365.25))
此表達式從完整年數中減去不完整的年份,結果是代表個人年齡的整數。
替代解決方案
在MySQL 中將年齡計算為整數的另一個選項是使用TIMESTAMPDIFF() 函數:
SELECT TIMESTAMPDIFF(YEAR, date_of_birth, CURDATE()) AS difference FROM student
該函數直接計算兩個時間戳記之間的年份差,避免了複雜的計算。它還可以透過將 YEAR 替換為 MONTH 或 DAY 來計算月或日的差異。
以上是如何在MySQL中準確計算年齡作為整數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!