是否可以在MySQL中计算两个时间戳之间的差异并以秒为单位获得输出结果?
像
2010-11-29 13:16:55 - 2010-11-29 13:13:55
应该给180秒。
谢谢你。
我认为接受的答案不是一个好的通用解决方案!
这是因为 UNIX_TIMESTAMP() 函数对于 1970 年 1 月 1 日之前的日期(以及使用 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')