以前曾经问过非常相似,但请耐心等待。
现在,人们想出了许多功能,以确定出生日期的准确年龄,并考虑闰年等等。但是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
对我来说看起来非常正确,这是很长一段时间,因为很少有错误的计算错误。
我的问题是,使用它是否安全?你能提供一组日期,这会给出不正确的结果吗? (对小于一天的单位不感兴趣)
答案 0 :(得分:1)
有一些错误,但是如果您最近有6年的MySQL版本,那么您应该放心使用它。
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.