如何更改 MySQL 中的 TIMESTAMPDIFF 日期格式?

How do I change the TIMESTAMPDIFF date format in MySQL?

我使用一个日期 table 的值减去另一个日期 table 来创建总时间日期 table。 但是,我不喜欢这种格式。

CONCAT(
        TIMESTAMPDIFF(day,TIME_END,TIME_START), 'd',
        MOD(TIMESTAMPDIFF(hour,TIME_END,TIME_START), 24), 'h',
        MOD(TIMESTAMPDIFF(minute,TIME_END,TIME_START), 60), 'm'
      ) AS Total_Times

结果如下:

似乎如果数字大于零,它会在它旁边添加一个连字符,否则它会在没有 space 的情况下将它旁边的任何内容分组。我怎样才能让它在零和之间创建一个 space 并删除连字符以显示如下:

请注意,在实际日期列 (TIME_END、TIME_START) 中,它们的值写为 2020-11-02 15:32:28.

我认为这里真正的问题是有时您将 TIME_STARTTIME_END 放在错误的位置。如果您想比较较早的开始时间和较晚的结束时间,那么前者应该出现在 之前 后者出现在对 TIMESTAMPDIFF 的调用中。使用此版本:

CONCAT(
    TIMESTAMPDIFF(day, TIME_START, TIME_END), 'd ',
    MOD(TIMESTAMPDIFF(hour, TIME_START, TIME_END), 24), 'h ',
    MOD(TIMESTAMPDIFF(minute, TIME_START, TIME_END), 60), 'm'
) AS Total_Times

进一步评论您当前的输出,例如

-2d-1h-7m

您在此处看到的破折号实际上是 减号,而不是破折号。您应该交换 TIME_STARTTIME_END 的顺序以获得正数。