728x90

LOCALTIMESTAMP() 함수는 오라클에서 로컬 세션의 현재 날짜와 시간을 반환하는 유용한 함수입니다. 이 글에서는 해당 함수의 기본 문법부터 실무에서 자주 활용되는 예제, 유사 함수와의 차이점까지 체계적으로 소개합니다.
1. LOCALTIMESTAMP 함수란?
LOCALTIMESTAMP는 타임존 정보를 포함하지 않는 TIMESTAMP 값을 반환합니다. 반환되는 값은 세션의 로컬 타임존을 기준으로 현재 시각을 나타냅니다.
기본 문법
LOCALTIMESTAMP [(precision)]
- precision: 소수점 이하 초 단위 자릿수 (0~9)
2. LOCALTIMESTAMP 기본 사용 예제
예제 1: 기본 호출
SELECT LOCALTIMESTAMP FROM dual;
-- 결과: 04-JUN-25 10.32.45.123456
예제 2: 소수점 초 단위 지정
SELECT LOCALTIMESTAMP(2) FROM dual;
-- 결과: 04-JUN-25 10.32.45.12
3. LOCALTIMESTAMP와 관련 함수 비교
| 함수 | 타입 | 타임존 포함 | 용도 |
|---|---|---|---|
| LOCALTIMESTAMP | TIMESTAMP | X | 세션 기준 시각 반환 (정밀) |
| SYSTIMESTAMP | TIMESTAMP WITH TIME ZONE | O | 세션 기준 시각 + 타임존 포함 |
| SYSDATE | DATE | X | 초 단위까지의 현재 날짜/시각 |
4. 실무 활용 예제
4-1. 테이블에 로컬 시간 기준으로 로그 저장
INSERT INTO log_table (log_time, message)
VALUES (LOCALTIMESTAMP, '로그 메시지 저장 완료');
4-2. LOCALTIMESTAMP로 시간 차 계산
SELECT order_id,
order_time,
LOCALTIMESTAMP - order_time AS hours_elapsed
FROM orders
WHERE order_time > LOCALTIMESTAMP - INTERVAL '2' HOUR;
4-3. 정밀한 시간 포맷 처리
SELECT TO_CHAR(LOCALTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3') AS formatted_time
FROM dual;
5. LOCALTIMESTAMP 주의사항
- 타임존이 포함되지 않기 때문에 글로벌 시스템에서는 SYSTIMESTAMP 권장
- 서버와 클라이언트의 세션 타임존 설정이 다르면 실제 시간과 오차 발생 가능
- 정밀 시간 연산 시 TIMESTAMP WITH TIME ZONE과의 비교 시 주의 필요
6. LOCALTIMESTAMP를 사용하는 이유
SYSDATE는 초 단위까지만 표현되며 DATE 타입이기 때문에, 마이크로초 또는 밀리초 단위 정밀도가 필요한 시스템에서는 LOCALTIMESTAMP가 더 적합합니다. 예를 들어, 고빈도 로그, 정밀 타이밍 기록, 시간차 분석 등에 활용됩니다.
7. LOCALTIMESTAMP를 활용한 응용 예제
7-1. 이전 1시간 이내 생성된 레코드 조회
SELECT *
FROM transaction_log
WHERE created_at > LOCALTIMESTAMP - INTERVAL '1' HOUR;
7-2. LOCALTIMESTAMP를 사용한 정렬
SELECT *
FROM user_activity
ORDER BY LOCALTIMESTAMP - activity_time DESC;
8. 결론
LOCALTIMESTAMP()는 Oracle에서 제공하는 정밀한 시간 처리를 위한 핵심 함수입니다. 타임존 정보를 제외한 현재 시각을 반환함으로써 단일 지역 기반의 시스템에서 가볍고 빠른 시간 연산이 가능합니다. 실무에서는 로그 저장, 정렬, 시간차 분석 등에 자주 활용되며, 초과 정밀도를 요하는 시스템에서는 반드시 익혀야 할 함수입니다.
참고자료
- Oracle 공식 문서
- Oracle 10g LOCALTIMESTAMP Reference
- 내부 ERP 로그 처리 프로젝트 사례 기반
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] SESSIONTIMEZONE() 함수로 글로벌 애플리케이션 시간대 문제 해결 (0) | 2025.06.05 |
|---|---|
| [ORACLE] DBTIMEZONE() 함수로 데이터베이스 시간대 정확히 설정하는 방법 (0) | 2025.06.05 |
| [ORACLE] NEW_TIME() 함수로 로컬 시간을 GMT로 변환하기 (0) | 2025.06.05 |
| [ORACLE] TRUNC() 숫자 절삭 처리 방법과 ROUND()와의 차이점 (0) | 2025.06.05 |
| [ORACLE] ROUND() 함수 초보 탈출 가이드: 숫자/날짜 반올림 핵심 정리 (0) | 2025.06.05 |