如何计算两个日期时间字段之间的确切小时数?

How to calculate exact hours between two datetime fields?

我需要计算日期时间字段之间的小时数,只需执行以下操作即可实现

select date1,date2,(date1-date2) from table; --This gives answer in DD:HH:MM:SS format
select date1,date2,(trunc(date1)-trunc(date2))*24 --This doesn't take into account the time, it only gives hours between two dates.

有没有一种方法可以找出日期时间之间的差异,以数字形式给出以小时为单位的输出?

在sql中使用DATEDIFF函数。

示例: SELECT DATEDIFF(HOUR, '2021-09-05 12:00:00', GETDATE());

你可以用日期之差乘以 24

 select date1
       ,date2
       ,(date1-date2)*24  as diff_in_hrs
  from table

第一个查询的 'format' 评论表明您的列是时间戳,尽管列名是虚拟的,因为减去两个时间戳的结果是一个间隔。您的第二个查询是将两个时间戳隐式转换为日期,然后再减去它们以获得天数的答案 - 如果您不截断它们并因此丢失时间部分,这将是分数。

您可以从间隔差中提取小时数,如果您希望超过一天,还可以提取 24 * 天数:

extract(day from (date1 - date2)) * 24 + extract(hour from (date1 - date2))

如果你想包括小数小时,那么你也可以提取和操作分钟和秒。

您还可以显式转换为日期,并在操作后截断或取整:

floor((cast(date1 as date) - cast(date2 as date)) * 24)

db<>fiddle demo