如何在 Toad for Oracle 中将计算出的时差转换为小数?

问题描述 投票:0回答:2

我在下面编写了一个查询,以确定批次/批次的最新和最早检验时间之间的差异(在名为“持续时间”的自定义列中)。

查询是:

SELECT LOT_ID, 
    MAX(INSPECTION_TIME), 
    MIN(INSPECTION_TIME), 
    MAX(INSPECTION_TIME) - MIN(INSPECTION_TIME) AS Duration
FROM table_name
WHERE LOT_ID = 1392353501 AND INSPECTION_ID = 49
GROUP BY LOT_ID

我得到的结果如下:

LOT_ID 最大(INSPECTION_TIME) 分钟(INSPECTION_TIME) 持续时间
1392353501 27/05/2023 20:06:03.529000 27/05/2023 17:36:50.657000 +00 02:29:12.872000

我是否可以在此结果输出中添加一个额外的列,以小数形式显示以小时为单位的时间差?

根据 Google 的说法,29 分钟、12 秒和 0.872 秒是 0.48690888889 小时。 我将其四舍五入为 0.487(小数点后 3 位)。

所以对于上面的例子,它将是:

LOT_ID最大(INSPECTION_TIME)分钟(INSPECTION_TIME)持续时间圆形139235350127/05/2023 20:06:03.52900027/05/2023 17:36:50.657000+00 02:29:12.8720002.487
sql date-arithmetic
2个回答
1
投票
如果您不介意秒的小数部分,则将时间戳转换为日期并减去以得到一天的小数部分,然后乘以 24:

SELECT LOT_ID, MAX(INSPECTION_TIME), MIN(INSPECTION_TIME), (CAST(MAX(INSPECTION_TIME) AS DATE) - CAST(MIN(INSPECTION_TIME) AS DATE)) * 24 AS Duration FROM SENSORMAINTAB.SENSOR_INSPECTIONS WHERE LOT_ID = 1392353501 AND INSPECTION_ID = 49 GROUP BY LOT_ID
如果您想要小数秒,则将时间戳截断到分钟的开头并找到差异,然后包括秒差异:

SELECT LOT_ID, MAX(INSPECTION_TIME), MIN(INSPECTION_TIME), ( TRUNC(MAX(INSPECTION_TIME), 'MI') - TRUNC(MIN(INSPECTION_TIME), 'MI') ) * 24 + ( EXTRACT(SECOND FROM MAX(INSPECTION_TIME)) - EXTRACT(SECOND FROM MIN(INSPECTION_TIME)) ) / 60 / 60 AS Duration FROM SENSORMAINTAB.SENSOR_INSPECTIONS WHERE LOT_ID = 1392353501 AND INSPECTION_ID = 49 GROUP BY LOT_ID
    

0
投票
两个时间戳相减得到一个

interval day to second

。如果你想保留亚秒精度,你需要提取间隔的每个部分并进行数学计算。

select t.*, round( extract(day from duration) * 24 + extract(hour from duration) + extract(minute from duration) / 60 + extract(second from duration) / 60 / 60, 3 ) as rounded from ( select lot_id, max(inspection_time) as max_time, min(inspection_time) as min_time, max(inspection_time) - min(inspection_time) as duration from sensormaintab.sensor_inspections where lot_id = 1392353501 and inspection_id = 49 group by lot_id ) t
使用子查询可以避免重复 

max(...) - min(...)

 表达式(我们也可以在横向连接中执行此操作)。

© www.soinside.com 2019 - 2024. All rights reserved.