如何减去两个 sql 时间戳字段,然后以小时为单位返回时差

Posted

技术标签:

【中文标题】如何减去两个 sql 时间戳字段,然后以小时为单位返回时差【英文标题】:How to subtract two sql timestamp fields then return time difference in hours 【发布时间】:2020-02-04 07:56:30 【问题描述】:

我正在使用开源数据库、元数据库,我尝试了datediff() 函数,它在当天返回 (datediff(d1,d2)),

但我希望它在几个小时内返回:

select d1,d2,d1-d2

然后它返回

'2020/01/30 T00:00:00.000Z' '2020/01/28 T19:17:39.000Z' 25,158,264

我怎么能在几个小时内改变它?提前致谢。

btw timestampdiff 在我的数据库版本中不起作用,所以我可能需要另一个解决方案

【问题讨论】:

1) 您可以使用 TIMEDIFF() 并获取 TIME 数据类型的差异。差额不得超过 1 个月。 2)您可以将操作数转换为TIMESTAMP,减去(获得以秒为单位的差异)并转换为小时。 【参考方案1】:

根据TIMESTAMPDIFF的手册

表中选择 d1,d2,TIMESTAMPDIFF(HOUR, d1, d2)

【讨论】:

嗨@stacker,timestampdiff 在我的数据库版本中不起作用,那么还有其他方法吗?谢谢 @JamieKuo 你用的是哪个版本的? 嗨@stacker,我与管理员核实,他们说有一些参数错误,并且在他们刷新环境后它现在可以工作了。无论如何,谢谢你的回答。【参考方案2】:

选择 TIMESTAMPDIFF(HOUR,d1,d2) 作为“小时差”;

【讨论】:

【参考方案3】:

我认为您使用的是 mysql

这是语法:

select TIMEDIFF('2020/01/30 T00:00:00.000Z','2020/01/28 T19:17:39.000Z') 

【讨论】:

以上是关于如何减去两个 sql 时间戳字段,然后以小时为单位返回时差的主要内容,如果未能解决你的问题,请参考以下文章

如何从 DB2 中的两个时间戳中获取差异?

mysql中计算两个时间的时间差,以分钟为单位。

SparkSQL - 两个时间戳之间的差异(以分钟为单位)

SQL 从时间戳中提取小时

以纪元毫秒为单位从当前日期减去两天 java [重复]

sql:mysql:函数:TIMESTAMPDIFF函数实现TimeStamp字段相减,求得时间差