减去时间戳

时间:2010-08-22 23:39:02

标签: sql mysql timestamp

我认为这将是一件非常简单的事情,但我很难找到任何答案!

我有一个支持表,其中包含added_onclosed_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   

2 个答案:

答案 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)...