MYSQL中两个日期之间的确切差异

时间:2017-07-17 15:49:50

标签: mysql sql

我想得到各年的两个日期的确切差异。

例如:

有两列有日期:

1991-05-21          1997-07-20 

因此手动计算时的差异为6年零2个月。那么,是否可以将6.2作为结果列中的差异?

我使用的语法是:timestampdiff(year,date1,date2)它给了我7个区别。

3 个答案:

答案 0 :(得分:1)

timestampdiff()功能始终向上舍入到您选择的最近单位。如果你想要这种级别的粒度,你最好在几个月内获得差异,然后除以它。

timestampdiff(MONTH, '1991-05-21', '1997-07-20') / 12 as difference

答案 1 :(得分:0)

这更好用:

concat(timestampdiff(year,columname1,columname2), '.' , mod(timestampdiff(month,columname1,columname2),12)) as columname from table_name

答案 2 :(得分:-1)

SELECT 
YEAR('1991-05-21') - YEAR('1997-07-20') - (DATE_FORMAT('1991-05-21', '%m%d') < DATE_FORMAT('1997-07-20', '%m%d')) 
+ '.' +
PERIOD_DIFF(DATE_FORMAT('1991-05-21', '%Y%m'), DATE_FORMAT('1997-07-20', '%Y%m'))
FROM tbl_dates

输出:6.2