如何计算两个日期时间字段之间的确切小时数?
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)
我需要计算日期时间字段之间的小时数,只需执行以下操作即可实现
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)