IT

IT Oracle database 함수(3), 날짜 함수

nedailylife 2025. 2. 26. 21:12

Oracle database(오라클 데이타베이스) 날짜 함수 목록 (Date Functions)

오라클 SQL작성 시 빼놓을 수 없는 날짜 함수들입니다.

Oracle database
Database

 

 

1. 현재 날짜 및 시간 관련 함수

현재 시스템 날짜와 시간을 반환 SYSDATE
현재 날짜와 시간(타임존 포함) 반환 SYSTIMESTAMP
세션의 타임존 기준 현재 날짜 반환 CURRENT_DATE
세션의 타임존 기준 현재 날짜와 시간 반환 CURRENT_TIMESTAMP
세션 타임존의 현재 날짜와 시간 반환 LOCALTIMESTAMP
SELECT SYSDATE FROM DUAL;

SELECT SYSTIMESTAMP FROM DUAL;

SELECT CURRENT_DATE FROM DUAL;

SELECT CURRENT_TIMESTAMP FROM DUAL;

SELECT LOCALTIMESTAMP FROM DUAL;

2. 날짜 연산 관련 함수

날짜에 n개월을 더한 날짜 반환 ADD_MONTHS(date, n)
두 날짜 간의 개월 수 반환 MONTHS_BETWEEN(date1, date2)
주어진 요일의 다음 날짜 반환 NEXT_DAY(date, '요일')
해당 월의 마지막 날짜 반환 LAST_DAY(date)
SELECT ADD_MONTHS(SYSDATE, 2) FROM DUAL;

SELECT MONTHS_BETWEEN('2024-12-01', '2024-06-01') FROM DUAL;

SELECT NEXT_DAY(SYSDATE, '월요일') FROM DUAL;

SELECT LAST_DAY(SYSDATE) FROM DUAL;

3. 날짜 포맷 변환 함수

문자열을 날짜로 변환 TO_DATE(string, format)
날짜를 문자열로 변환 TO_CHAR(date, format)
SELECT TO_DATE('2025-01-01', 'YYYY-MM-DD') FROM DUAL;
-- 2025-01-01

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
-- 2025/01/01 00:00:00

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH:MI:SS AM') FROM DUAL;
-- 2025-01-01 01:10:00 PM

SELECT DAY(SYSDATE) FROM DUAL;
-- SUNDAY

SELECT DY(SYSDATE) FROM DUAL;
-- SUN

4. 날짜 차이 및 비교 함수

TRUNC(date, format) 날짜를 특정 단위로 절삭 SELECT TRUNC(SYSDATE, 'MONTH') FROM DUAL;
ROUND(date, format) 날짜를 특정 단위로 반올림 SELECT ROUND(SYSDATE, 'MONTH') FROM DUAL;
EXTRACT(part FROM date) 날짜에서 특정 부분 추출 SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL;
SELECT TRUNC(SYSDATE, 'MONTH') FROM DUAL;

SELECT ROUND(SYSDATE, 'MONTH') FROM DUAL;

SELECT EXTRACT(YEAR FROM SYSDATE) AS YEAR,
       EXTRACT(MONTH FROM SYSDATE) AS MONTH,
       EXTRACT(DAY FROM SYSDATE) AS DAY
FROM DUAL;

5. 타임스탬프 및 타임존 관련 함수

특정 타임존을 가진 TIMESTAMP 생성 FROM_TZ(TIMESTAMP, '타임존')
특정 타임존의 UTC 오프셋 반환 TZ_OFFSET('타임존')
특정 타임존 기준 현재 시간 반환 CURRENT_TIMESTAMP AT TIME ZONE '타임존'
SELECT FROM_TZ(TIMESTAMP '2025-01-01 12:00:00', 'Asia/Seoul') FROM DUAL;

SELECT TZ_OFFSET('Asia/Seoul') FROM DUAL;

SELECT CURRENT_TIMESTAMP AT TIME ZONE 'America/New_York' FROM DUAL;
반응형