问题描述
我正在使用一个日期表的值减去另一个日期表来创建总时间日期表。 但是,我不喜欢这种格式。
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_START
和TIME_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_START
和TIME_END
的顺序互换以获得正数。