[Oracle] 오라클 현재시간, 현재날짜 구하기 (SYSDATE)
- 데이터베이스/오라클
- 2024. 5. 27.
오라클 SQL에서 SYSDATE 함수를 사용하여 서버의 현재 날짜와 시간을 조회할 수 있다. 반면, SYSTIMESTAMP 함수는 나노초 단위까지 더 정밀한 시간을 반환하고 타임존 정보도 포함한다. SYSDATE는 DATE 타입을 반환하고, SYSTIMESTAMP는 TIMESTAMP WITH TIME ZONE 타입을 반환한다. SYSDATE는 간단한 현재 시각이 필요할 때 주로 사용되며, SYSTIMESTAMP는 더 높은 정밀도와 타임존 정보가 필요할 때 유용하다. 이 두 함수 모두 서버의 시스템 시간을 기준으로 동작한다.
목차 |
SYSDATE로 현재 날짜, 시간 구하기
SELECT SYSDATE
FROM dual
SYSDATE 함수를 사용하여 현재 날짜, 현재 시간을 조회할 수 있다. 날짜 형식이기 때문에 오라클 서버 또는 쿼리툴에 설정된 날짜 형식으로 표시된다.
YYYY-MM-DD → 2024-05-25
RR/MM/DD → 24/05/25
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') AS cur_date
, TO_CHAR(SYSDATE, 'HH24:MI:SS') AS cur_time
, TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS cur_datetime
FROM dual
TO_CHAR 함수를 사용하여 DATE 형식을 원하는 포맷의 문자열로 변환할 수 있다.
( HH24: 24시간 단위, HH: 12시간 단위 )
SYSTIMESTAMP로 현재 날짜, 시간 구하기
SELECT SYSTIMESTAMP
FROM dual
SYSTIMESTAMP 함수를 사용하면 SYSDATE 함수와 동일한 현재 날짜와 시간을 조회할 수 있다. 그리고 SYSTIMESTAMP 함수는 9자리의 밀리초를 추가로 반환한다.
SELECT TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD') AS cur_date
, TO_CHAR(SYSTIMESTAMP, 'HH24:MI:SS') AS cur_time
, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') AS cur_datetime
FROM dual
SYSTIMESTAMP 함수도 SYSDATE 함수와 동일하게 TO_CHAR 함수를 사용하여 포맷을 변환할 수 있다.
SELECT TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS:FF') AS cur_datetime_ff
, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS:FF1') AS cur_datetime_ff1
, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS:FF2') AS cur_datetime_ff2
, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS:FF3') AS cur_datetime_ff3
, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS:FF4') AS cur_datetime_ff4
, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS:FF5') AS cur_datetime_ff5
, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS:FF6') AS cur_datetime_ff6
, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS:FF6') AS cur_datetime_ff7
, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS:FF7') AS cur_datetime_ff8
, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS:FF8') AS cur_datetime_ff9
FROM dual
날짜 변환 포맷에 FF, FF1 ~ FF9를 사용하여 밀리 초를 추가할 수 있다.
FF: 6자리
FF1 ~ FF9: 1자리 ~ 9자리
CURRENT_DATE, CURRENT_TIMESTAMP로 구하기
SELECT CURRENT_DATE
, CURRENT_TIMESTAMP
FROM dual
CURRENT_DATE, CURRENT_TIMESTAMP 함수도 SYSDATE 함수와 동일하게 현재 날짜, 시간을 반환한다. 그러나 CURRENT_DATE 함수는 서버에 설정된 타임 존에 따라서 달라질 수 있다는 것을 인지하고 있어야 한다.
--ALTER SESSION SET TIME_ZONE = 'Asia/Seoul';
ALTER SESSION SET TIME_ZONE = 'America/New_York';
타임 존을 "서울"에서 "뉴욕"으로 변경 후 SYSTIMESTAMP와 CURRENT_TIMESTAMP의 시간이 틀려진 것을 확인할 수 있다.
CURRENT_DATE, CURRENT_TIMESTAMP 함수를 사용할 때는 타임 존 설정에 따라서 시간이 달라질 수 있으므로 특수한 상황이 아니면 SYSDATE, SYSTIMESTAMP 함수를 사용할 것을 권장한다.