可以在MySQL中计算两个时间戳之间的差异,并以秒为单位输出结果吗?
例如,
谢谢。
例如,
2010-11-29 13:16:55 - 2010-11-29 13:13:55
应该得到180秒。谢谢。
2010-11-29 13:16:55 - 2010-11-29 13:13:55
应该得到180秒。我认为被接受的答案并不是一个好的通用解决方案!
这是因为UNIX_TIMESTAMP()函数在1970-01-01之前的DATE上失败(并且对于使用32位整数的将来日期也会失败)。这很容易发生在许多活着的人的出生日期。
更好的解决方案是:
SELECT TIMESTAMPDIFF(SECOND, '2010-11-29 13:13:55', '2010-11-29 13:16:55')
可以修改它以返回DAY YEAR MONTH HOUR和MINUTE!
使用UNIX_TIMESTAMP函数将DATETIME转换为从1970年1月1日开始的秒值:
SELECT UNIX_TIMESTAMP('2010-11-29 13:16:55') - UNIX_TIMESTAMP('2010-11-29 13:13:55') as output
结果:
output
-------
180
如果您不确定哪个值更大,则可以使用ABS函数轻松处理:
SELECT ABS(UNIX_TIMESTAMP(t.datetime_col1) - UNIX_TIMESTAMP(t.datetime_col2)) as output
TIMESTAMPDIFF 方法只适用于日期时间格式。如果您想计算两个时间之间的差值,例如 '11:10:00' 减去 '10:20:00',则请使用
select TIME_TO_SEC('11:10:00')-TIME_TO_SEC('10:20:00')