2014-01-12 25 views
0

是的非常類似之前已經被問過,但忍受着我。從出生之日起的MySQL年齡 - TIMESTAMPDIFF()

現在有很多功能的人提出來確定一個準確的年齡從出生日期考慮到閏年和whatnot。然而,MySQL documentation提供了一個非常簡單的解決方案:

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 

看起來很正確的我,這是一個很長的時間輕微的失誤在疊起來赫克

我對你的問題,是安全的用這個?你能提供一組日期,這會給出一個不正確的結果嗎? (在不到一天單位更小的不感興趣)

+3

如果文檔說它計算出差異,並且所有的測試都證實了它,爲什麼你會懷疑它呢?如果有警告,我想它會這樣說。 – Barmar

+0

它可能使用類似於這裏的算法:http://alcor.concordia.ca/~gpkatch/gdate-algorithm.html – Barmar

+0

@Barmar,因爲它在網絡上的其他帖子中被廣泛忽略,以支持更大更復雜的算法。我的測試絕不是確定性的(我不知道要測試什麼)。僅僅因爲它在文檔中並不意味着它是完全準確的,存在錯誤,他們可以認爲「它足夠好」,但我的足夠不同。我喜歡事實,而不是猜測。 –

回答