MySQL:两个时间戳之间的差异(以秒为单位)?

问题描述 投票:0回答:3

是否可以在MySQL中计算两个时间戳之间的差异并以秒为单位获得输出结果?

2010-11-29 13:16:55 - 2010-11-29 13:13:55
应该给180秒。

谢谢你。

sql mysql timestamp
3个回答
164
投票

我认为接受的答案不是一个好的通用解决方案!

这是因为 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!


42
投票

使用 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

2
投票

TIMESTAMPDIFF 方法仅适用于日期时间格式。如果您想要两个时间之间的差异,例如“11:10:00”减去“10:20:00”,那么使用

select TIME_TO_SEC('11:10:00')-TIME_TO_SEC('10:20:00')
© www.soinside.com 2019 - 2024. All rights reserved.