簡體   English   中英

MySQL年齡從出生日期開始-TIMESTAMPDIFF()

[英]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.

http://bugs.mysql.com/bug.php?id=16697

http://bugs.mysql.com/bug.php?id=25994

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM