我需要计算两次约会之间的秒差。我不能使用timediff,因为它的局限性。
当我使用:
SELECT UNIX_TIMESTAMP('2015-03-28 08:21:15') - UNIX_TIMESTAMP('2015-03-27 08:21:15');
它返回预期的86400秒(即24小时),但当我使用:
SELECT UNIX_TIMESTAMP('2015-03-29 08:21:15') - UNIX_TIMESTAMP('2015-03-27 08:21:15');
它似乎没有给出86400*2,而是169200,而是47小时。
问题是-为什么?它是一个bug还是一个特性?有没有其他合理的方法来计算时差而不用担心时间限制?
2条答案
按热度按时间46scxncf1#
有几种方法可以解决这个问题:
使用unix\u timestamp():
使用
SET SESSION time_zone = '+0:00'
在执行日期操作之前。这是回报
172800
,即适当的时差48 hours
.演示。
使用timestampdiff():
如果你不想使用
SET SESSION time_zone
,你可以试试TIMESTAMPDIFF()
```SELECT UNIX_TIMESTAMP('2015-03-29 08:21:15') - UNIX_TIMESTAMP('2015-03-27 08:21:15');
SELECT TIMESTAMPDIFF(SECOND, '2015-03-27 08:21:15', '2015-03-29 08:21:15');
SELECT ABS(TIMESTAMPDIFF(SECOND, '2015-03-29 08:21:15', '2015-03-27 08:21:15'));
zf9nrax12#
看起来2015年3月29日有日光变化,这可能是2015年夏令时的原因