[英]MySQL age from date of birth - TIMESTAMPDIFF()
是的,曾經有人提出過非常相似的要求,但請忍受。
現在,人們想出了許多功能來確定從出生日期算起的准確年齡,同時還要考慮leap年和其他因素。 但是, MySQL文檔提供了一個非常簡單的解決方案:
SELECT TIMESTAMPDIFF(YEAR, dob, CURDATE()) AS age
這似乎適用於我提出的所有日期。 但是,文檔中沒有說明此方法的正確性或如何計算差異。 它似乎比簡單的diff/365.25
更聰明。
這里有一些例子:
('1992-08-12', '3009-08-12') => 1017 - Correct
('1992-08-12', '3009-08-11') => 1016 - Correct
('1992-02-29', '3009-03-01') => 1017 - Correct
('1992-02-29', '3009-02-28') => 1016 - Correct
對我來說看起來很正確,這是很長一段時間的累積,可能會出現一些小的錯誤計算。
我對你的問題是,使用它安全嗎? 您可以提供一組日期,以得出錯誤的結果嗎? (對少於一天的單位不感興趣)
已經有bug了,但是如果您說最新的MySQL版本為6年左右,則應該放心使用它:)
some earlier bugs e.g. month diff of dates:
TS1 = '2006-01-21 19:52:05'
TS2 = '2007-01-21 18:30:14'
which gave 0, and not 12.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.