需要查找结果sql表中多行的两个时间戳之间的时间差(以小时为单位)

qybjjes1  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(386)

我有3个表,我在上面执行某些操作,并能够得到下表表1

OID     SID     OID_create          SID_create
817953  951261  2020-05-01 00:00:16 2020-05-01 10:15:32
817953  951407  2020-05-01 00:00:16 2020-05-01 10:30:13
817954  952564  2020-05-01 00:00:16 2020-05-01 12:01:33
817954  954544  2020-05-01 00:00:16 2020-05-01 17:45:18
817955  956318  2020-05-01 00:00:16 2020-05-02 07:00:59
817956  959146  2020-05-01 00:00:16 2020-05-02 10:46:26

为了找出sid\u create和oid\u create的区别,我使用了以下查询

select OID, SID, OID_create, SID_create, (SID_create - OID_create) as Difference
from Table1

结果就成了这样一张table

OID     SID     OID_create          SID_create          Difference
817953  951261  2020-05-01 00:00:16 2020-05-01 10:15:32 101516
817953  951407  2020-05-01 00:00:16 2020-05-01 10:30:13 102997
817954  952564  2020-05-01 00:00:16 2020-05-01 12:01:33 120117
817954  954544  2020-05-01 00:00:16 2020-05-01 17:45:18 174502
817955  956318  2020-05-01 00:00:16 2020-05-02 07:00:59 1070043
817956  959146  2020-05-01 00:00:16 2020-05-02 10:46:26 1104610

请帮助理解差值是否以秒、分、小时或其他形式表示。我更希望我能在几个小时内直接得到结果,如何实现它

sf6xfgos

sf6xfgos1#

在mysql中直接减去日期不是一个好主意。虽然这不会引起错误,但很可能会得到意外的结果。据我所知,每个日期都变成了数字表示(例如 '2020-05-01 00:00:16' 会变成 20200501000016 ),然后减去。
在mysql中,获取给定单元中to-date表达式之间差异的一种简单方法是使用date函数 timestampdiff() :

timestampdiff(hour, OID_create, SID_create)

相关问题