我想得到各年的两个日期的确切差异。
例如:
有两列有日期:
1991-05-21 1997-07-20
因此手动计算时的差异为6年零2个月。那么,是否可以将6.2作为结果列中的差异?
我使用的语法是:timestampdiff(year,date1,date2)
它给了我7个区别。
答案 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