MySql在Seconds中的两个时间戳之间的差异?

Goo*_*Guy 37 mysql sql timestamp

是否可以计算Mysql中两个时间戳之间的差异,并在几秒钟内获得输出结果?喜欢2010-11-29 13:16:55 - 2010-11-29 13:13:55应该给180秒.

谢谢

Ode*_*Wat 147

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

这是因为UNIX_TIMESTAMP()函数在1970-01-01之前的DATE失败(对于远期使用32位整数的日期).这可能很容易发生在许多活着的人的出生那天.

更好的解决方案是:

SELECT TIMESTAMPDIFF(SECOND, '2010-11-29 13:13:55', '2010-11-29 13:16:55')
Run Code Online (Sandbox Code Playgroud)

哪个可以修改,以返回DAY YEAR MONTH HOUR和MINUTE呢!

  • @Kareem:OP希望获得180分.这就是我的示例代码所给出的. (3认同)
  • @coolDude:SELECT SEC_TO_TIME(TIMESTAMPDIFF(SECOND,'2010-11-29 13:13:55','2010-11-29 13:16:55'))会做到这一点. (3认同)
  • 这是最好的解决方案,然后是公认的答案,谢谢。 (2认同)
  • 更整洁。应该是公认的答案 (2认同)

OMG*_*ies 32

从1970年1月1日开始,使用UNIX_TIMESTAMP函数将DATETIME转换为以秒为单位的值:

SELECT UNIX_TIMESTAMP('2010-11-29 13:16:55') - UNIX_TIMESTAMP('2010-11-29 13:13:55') as output
Run Code Online (Sandbox Code Playgroud)

结果:

output
-------
180
Run Code Online (Sandbox Code Playgroud)

如果您不确定哪个值大于另一个值,则可以轻松处理 - 使用ABS功能:

SELECT ABS(UNIX_TIMESTAMP(t.datetime_col1) - UNIX_TIMESTAMP(t.datetime_col2)) as output
Run Code Online (Sandbox Code Playgroud)

  • 在1970-01-01之前的DATE失败 (7认同)