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

问题描述

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

dir

结果显示如下:

  • 0d0h-48m
  • -2d-1h-7m
  • 0d0h-33m
  • 0d0h0m
  • -1d-21h-47m

看来,如果数字大于零,它将在其旁边添加一个连字符,否则它将分组其旁边的所有字符而没有空格。如何获取它以在零之间创建一个空格并删除连字符以显示如下:

  • 0d 0h 48m
  • 2d 1h 7m
  • 0d 0h 33m
  • 0d 0h 0m
  • 1d 21h 47m

请注意,在实际日期列(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,24),'h ',MOD(TIMESTAMPDIFF(minute,60),'m'
) AS Total_Times

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

-2d-1h-7m

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