Вы можете использовать to_date()
, чтобы преобразовать обе строки в date
s (без учета миллисекундной части), а затем вычесть их. Это дает вам числовое значение c, которое представляет разницу между датами в виде количества дней, которое затем можно преобразовать в часы:
(
to_date(substr(col1, 1, 19), 'yyyy-mm-dd hh24:mi:ss')
- to_date(substr(col2, 1, 19), 'yyyy-mm-dd hh24:mi:ss')
) * 24 * 60
Если вы действительно хотите включить миллисекунду, тогда это становится длинным. Вы можете преобразовать строки в timestamp
s, используя to_timestamp()
, а затем вычесть их; это создает интервал, из которого вам нужно извлечь каждую часть.
extract(hour from
to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
- to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
) * 60
+ extract(minute from
to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
- to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
)
+ extract(second from
to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
- to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
) / 60