如何更改 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
结果如下:
- 0d0h-48m
- -2d-1h-7m
- 0d0h-33m
- 0d0h0m
- -1d-21h-47m
似乎如果数字大于零,它会在它旁边添加一个连字符,否则它会在没有 space 的情况下将它旁边的任何内容分组。我怎样才能让它在零和之间创建一个 space 并删除连字符以显示如下:
- 0d 0h 48m
- 2 天 1 小时 7 米
- 0d 0h 33m
- 0d 0h 0m
- 1 天 21 小时 47 米
请注意,在实际日期列 (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, TIME_START, TIME_END), 24), 'h ',
MOD(TIMESTAMPDIFF(minute, TIME_START, TIME_END), 60), 'm'
) AS Total_Times
进一步评论您当前的输出,例如
-2d-1h-7m
您在此处看到的破折号实际上是 减号,而不是破折号。您应该交换 TIME_START
和 TIME_END
的顺序以获得正数。
我使用一个日期 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
结果如下:
- 0d0h-48m
- -2d-1h-7m
- 0d0h-33m
- 0d0h0m
- -1d-21h-47m
似乎如果数字大于零,它会在它旁边添加一个连字符,否则它会在没有 space 的情况下将它旁边的任何内容分组。我怎样才能让它在零和之间创建一个 space 并删除连字符以显示如下:
- 0d 0h 48m
- 2 天 1 小时 7 米
- 0d 0h 33m
- 0d 0h 0m
- 1 天 21 小时 47 米
请注意,在实际日期列 (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, TIME_START, TIME_END), 24), 'h ',
MOD(TIMESTAMPDIFF(minute, TIME_START, TIME_END), 60), 'm'
) AS Total_Times
进一步评论您当前的输出,例如
-2d-1h-7m
您在此处看到的破折号实际上是 减号,而不是破折号。您应该交换 TIME_START
和 TIME_END
的顺序以获得正数。