[英]subtracting timestamps
I thought this would be a really simple thing, but I'm having a hard time finding any answers! 我认为这将是一件非常简单的事情,但我很难找到任何答案!
I have a support table, with added_on
and closed_on
fields that track when support tickets were opened and closed. 我有一个支持表,其中包含
added_on
和closed_on
字段,用于跟踪何时打开和关闭支持票据。
I'd like to run a query that (closed_on - added_on)
to show the duration a ticket was open. 我想运行一个查询
(closed_on - added_on)
来显示(closed_on - added_on)
单打开的持续时间。 Both fields are timestamp
format. 这两个字段都是
timestamp
格式。 This is not as simple as I thought it would be... 这并不像我想象的那么简单......
Ideally, final output would be X days Y hours Z minutes
but I'd be happy just to get total seconds or something, I can certainly take it from there. 理想情况下,最终输出将是
X days Y hours Z minutes
但我很高兴只得到总秒数或其他东西,我当然可以从那里拿走它。
Sample data: 样本数据:
[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
Use: 使用:
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')
With your example data, that gives me: 使用您的示例数据,这给了我:
0 days 00 hours 00 minutes
0 days 13 hours 30 minutes
You can use TIMESTAMPDIFF to get the difference in seconds: 您可以使用TIMESTAMPDIFF来获得以秒为单位的差异:
SELECT TIMESTAMPDIFF(SECOND,closed_on,added_on)...
Edit: Another way would be to use UNIX_TIMESTAMP: 编辑:另一种方法是使用UNIX_TIMESTAMP:
SELECT UNIX_TIMESTAMP(closed_on)-UNIX_TIMESTAMP(added_on)...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.