MySQL诞生日期 - TIMESTAMPDIFF()

时间:2014-01-12 02:53:53

标签: mysql sql date timestamp

以前曾经问过非常相似,但请耐心等待。

现在,人们想出了许多功能,以确定出生日期的准确年龄,并考虑闰年等等。但是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

对我来说看起来非常正确,这是很长一段时间,因为很少有错误的计算错误。

我的问题是,使用它是否安全?你能提供一组日期,这会给出不正确的结果吗? (对小于一天的单位不感兴趣)

1 个答案:

答案 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.

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

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