我认为这将是一件非常简单的事情,但我很难找到任何答案!
我有一个支持表,其中包含added_on
和closed_on
字段,用于跟踪何时打开和关闭支持服务单。
我想运行(closed_on - added_on)
的查询来显示故障单打开的持续时间。这两个字段都是timestamp
格式。这并不像我想象的那么简单......
理想情况下,最终输出将是X days Y hours Z minutes
但我会很高兴得到总秒数或其他东西,我当然可以从那里拿走它。
示例数据:
[id] [added_on] [closed_on]
1 2010-01-01 00:10:20 2010-01-02 00:10:20
1 2010-01-03 00:00:01 2010-01-03 13:30:01
答案 0 :(得分:3)
使用:
SELECT CONCAT(DATEDIFF(closed_on, added_on),
' days ',
SUBSTRING_INDEX(TIMEDIFF(closed_on, added_on), ':', 1),
' hours ',
SUBSTR(TIMEDIFF(closed_on, added_on), INSTR(TIMEDIFF(closed_on, added_on), ':')+1, 2),
' minutes')
使用您的示例数据,这给了我:
0 days 00 hours 00 minutes
0 days 13 hours 30 minutes
答案 1 :(得分:0)
您可以使用TIMESTAMPDIFF以秒为单位获得差异:
SELECT TIMESTAMPDIFF(SECOND,closed_on,added_on)...
编辑:另一种方法是使用UNIX_TIMESTAMP:
SELECT UNIX_TIMESTAMP(closed_on)-UNIX_TIMESTAMP(added_on)...