[Oracle] 날짜(Date)에서 시간만 추출하는 2가지 방법
- 데이터베이스/오라클
- 2024. 9. 19.
오라클 SQL에서 날짜 형식에서 시간을 추출하기 위해서는 TO_CHAR 함수와 EXTRACT 함수를 사용하면 된다. TO_CHAR 함수는 시간 값을 문자열로 반환하며, EXTRACT 함수는 숫자 값으로 반환한다. TO_CHAR 함수를 조금 더 많이 사용하는 편이지만, 두 함수의 특성이 조금 다르기 때문에 상황에 따라서 필요한 함수를 사용하면 된다.
목차 |
날짜에서 시간을 추출하는 방법
SELECT SYSDATE
, TO_CHAR(SYSDATE, 'HH24') AS to_char_hour
, EXTRACT(HOUR FROM CAST(SYSDATE AS TIMESTAMP)) AS extract_hour
FROM dual
TO_CHAR 함수와 EXTRACT 함수를 사용하면 날짜에서 시간을 쉽게 추출할 수 있다.
EXTRACT 함수는 데이터 형식을 TIMESTAMP로 변경해야 시간을 추출할 수 있다.
TO_CHAR 함수를 사용하여 시간을 추출하는 방법
SELECT SYSDATE
, TO_CHAR(SYSDATE, 'HH24:MI:SS') AS time_only
, TO_CHAR(SYSDATE, 'HH24') AS hour_part
, TO_CHAR(SYSDATE, 'MI') AS minute_part
, TO_CHAR(SYSDATE, 'SS') AS second_part
FROM dual
TO_CHAR 함수를 사용할 경우 다양한 형식으로 시간을 추출할 수 있기 때문에 편리하게 사용할 수 있다.
EXTRACT 함수를 사용하여 시간을 추출하는 방법
SELECT SYSDATE
, EXTRACT(HOUR FROM CAST(SYSDATE AS TIMESTAMP)) AS hour_part
, EXTRACT(MINUTE FROM CAST(SYSDATE AS TIMESTAMP)) AS minute_part
, EXTRACT(SECOND FROM CAST(SYSDATE AS TIMESTAMP)) AS second_part
FROM dual
EXTRACT 함수를 사용하면 시간, 분, 초를 각각 추출할 수 있다.
TO_CHAR 함수와 EXTRACT 함수의 반환값 비교
WITH TEMP AS (
SELECT TO_DATE('2024-09-19 08:00:00', 'YYYY-MM-DD HH24:MI:SS') AS dte FROM dual
UNION ALL
SELECT TO_DATE('2024-09-19 09:30:10', 'YYYY-MM-DD HH24:MI:SS') AS dte FROM dual
UNION ALL
SELECT TO_DATE('2024-09-19 10:05:30', 'YYYY-MM-DD HH24:MI:SS') AS dte FROM dual
)
SELECT dte
, TO_CHAR(dte, 'HH24') AS to_char_hour
, EXTRACT(HOUR FROM CAST(dte AS TIMESTAMP)) AS extract_hour
FROM TEMP
TO_CHAR 함수는 시간을 추출할 때 문자열로 반환하고, EXTRACT 함수는 숫자 형식으로 반환한다.
추출한 값을 연산해야 할 경우 숫자 형식이면 조금 편리한 부분이 있지만, 날짜 형식을 TIMESTAMP 형식으로 바꿔야 하기 때문에 조금 번거로운 부분도 존재한다.