mysql中的日期时间差异显示错误的结果

时间:2015-06-29 10:31:28

标签: mysql

select CONCAT(
    Lpad(
        FLOOR(HOUR(TIMEDIFF('2015-06-25 12:10', '2011-06-21 10:10')) / 24),
        4,0),':',
    Lpad(
        MOD(HOUR(TIMEDIFF('2014-06-25 12:10', '2015-06-21 10:10')), 24),
        4,0),':',
    Lpad(
        MINUTE(TIMEDIFF('2014-06-25 12:10', '2015-06-21 10:15')),
        4,0), '')   

上面的MySQL select语句给出了

  

报告错误。日期=天数:小时:分钟

的所需格式

1 个答案:

答案 0 :(得分:0)

您正在使用的功能受 TIME 类型的限制,该类型可能来自' -838:59:59'到' 838:59:59'你应该使用返回整数的TIMESTAMPDIFF

select
  TIMESTAMPDIFF(DAY,'2011-06-21 10:10','2015-06-25 12:10') as c_days,
  TIMESTAMPDIFF(HOUR,'2014-06-25 12:10', '2015-06-21 10:10') as c_hrs,
  TIMESTAMPDIFF(MINUTE,'2014-06-25 12:10', '2015-06-21 10:15') as c_mnt;

但是这并没有多大意义,你的公式中可能会有一些拼写错误,下面的代码可能是你正在寻找的。

set @a_mnt := TIMESTAMPDIFF(MINUTE,'2014-06-25 12:10', '2015-06-21 10:10');
select
    concat(
        lpad(floor(@a_mnt := @a_mnt / 1440 ), 4, 0), ':',
        lpad(floor(@a_mnt := ((@a_mnt - floor(@a_mnt)) * 24)), 4, 0), ':',
        lpad(floor((@a_mnt - floor(@a_mnt)) * 60 ), 4, 0)) as result;