timestamp 타입의 컬럼1과 컬럼2가 있습니다.
23/01/02 14:54:23.610000000 이런형태로 저장이 되어있고, 컬럼1과 컬럼2는 무조건 같은 날짜에 다른 시간이 저장 되게끔 해놓았습니다. 컬럼1과 컬럼2의 시간차이를 00h, 00m, 00s 형태로 구하고 싶은데 쿼리문을 어떻게 짜야 하나요?
Mysql에서는 timediff로 쉽게 구해졌는데 oracle database에서는 어떻게 해야하는지 알고싶습니다.
오라클은 timediff에 해당하는 함수는 없네요. 같은날짜면 아래처럼 하면 될듯합니다.
SELECT
to_char(trunc(sysdate) + (DATE1-DATE2), 'HH24') || ':' ||
to_char(trunc(sysdate) + (DATE1-DATE2), 'MI') || ':' ||
to_char(trunc(sysdate) + (DATE1-DATE2), 'SS')
FROM test
감사합니다!
WITH t AS
(
SELECT TO_TIMESTAMP('2023/01/02 14:54:23.610', 'yyyy/mm/dd hh24:mi:ss.ff') sdt
, TO_TIMESTAMP('2023/01/02 16:24:43.830', 'yyyy/mm/dd hh24:mi:ss.ff') edt
FROM dual
)
SELECT sdt
, edt
, TO_CHAR(EXTRACT(hour FROM edt - sdt), 'fm00') h
, TO_CHAR(EXTRACT(minute FROM edt - sdt), 'fm00') m
, TO_CHAR(EXTRACT(second FROM edt - sdt), 'fm00') s
, SUBSTR(edt - sdt, 12, 8) hms
, edt - sdt interval_
FROM t
;