티스토리 뷰

공부/SQL

날짜 관련 함수

kd0547 2023. 6. 14. 18:58

 

SYSDATE 함수

SYSDATE 함수는 현재 시스템 날짜와 시간을 반환하는 함수입니다.  SYSDATE 함수는 아무런 인수를 필요로하지 않고, 호출될 때마다 현재 시스템의 날짜와 시간을 가져옵니다. 시간을 가져올 때는 오라클 DB가 설치된 서버의 날짜 정보를 가져옵니다. 따라서 데이터베이스 서버의 시간 설정은 정확하게 유지하는 것이 중요합니다.

SELECT 	SYSDATE AS NOW,
	SYSDATE-1 AS YESTERDAY,
	SYSDATE+1 AS TOMORROW
FROM DUAL ;
YESTERDAY NOW TOMORROW
2023-06-13 17:42:27.000 2023-06-14 17:42:27.000 2023-06-15 17:42:27.000

 

 

ADD_MONTHS 함수

ADD_MONTHS 함수는 특정 날짜에 지정한 개월 수 이후 날짜 데이터를 반환합니다. 

ADD_MONTHS([날짜 데이터(필수)],[더할 개월 수 (정수)(필수)])

 

SELECT SYSDATE, 
	ADD_MONTHS(SYSDATE,3)
FROM DUAL 
;
SYSDATE ADD_MONTHS(SYSDATE,3)
2023-06-14 20:33:30.000 2023-09-14 20:33:30.000

 

MONTHS_BETWEEN 함수

MONTHS_BETWEEN 함수는 두 개의 날짜를 입력하고 두 날짜 간의 개월 수 차이를 구하는데 사용합니다. 

MONTHS_BETWEEN([날짜1(필수)],[날짜2(필수)]

 

SELECT MONTHS_BETWEEN(SYSDATE ,ADD_MONTHS(SYSDATE,3))
FROM DUAL;
MONTHS_BETWEEN(SYSDATE ,ADD_MONTHS(SYSDATE,3))
-3

 

SELECT MONTHS_BETWEEN(ADD_MONTHS(SYSDATE,3) ,SYSDATE)
FROM DUAL;
MONTHS_BETWEEN(ADD_MONTHS(SYSDATE,3) ,SYSDATE)
3

날짜를 입력하는 위치에 따라 음수 또는 양수가 나올 수 있습니다. 개월 수 차이는 소수점 단위까지 결과가 나오므로  TRUNC 함수를 조합하면 개월 수 차이를 정수로 출력할 수도 있습니다. 

 

NEXT_DAT, LAST_DAY 함수

NEXT_DAY 함수는  날짜와 요일을 매개변수로 받아 해당 날짜 이후로 가장 가까운 요일을 찾아 반환합니다.

NEXT_DAY([날짜(필수)],[요일 문자(필수)])

 

LAST_DAY 함수는 해당 날짜가 속한 달의 마지막 날짜를 반환해주는 함수입니다. 

LAST_DAY([날짜(필수)])

 

SELECT NEXT_DAY(SYSDATE,'월요일'), LAST_DAY(SYSDATE)
FROM DUAL;
NEXT_DAY(SYSDATE,'월요일') LAST_DAY(SYSDATE)
2023-06-19 20:56:19.000 2023-06-30 20:56:19.000

 

ROUND, TRUNC 함수

숫자의 반올림, 버림 처리에 사용하는 ROUND,TRUNC 함수는 날짜를 입력 데이터로 사용할 수 있습니다. 이때는 소수점 위치 정보를 입력하지 않고 반올림, 버림의 기준이 될 포맷 값을 지정해 줍니다.

 

포맷 모델 기준 단위
CC, SCC 네 자리 연도의 끝 두 자리를 기준으로 사용
SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y 날짜 데이터의 해당 연,월,일의 7월 1일을 기준
(2016년 7월 1일 일 경우, 2017년으로 처리)
IYYY, IYY, IY, I ISO 8601에서 제정한 날짜 기준년도 포맷을 기준
Q 각 분기의 두 번째 달의 16일 기준
MONTH, MON, MM, RM 각 달의 16일 기준
WW 해당 연도의 몇 주(1 ~ 53번째 주)를 기준
IW ISO 8601에서 제정한 날짜 기준 해당 연도의 주(week)를 기준
W 해당 월의 주(1~5번째 주)를 기준
DDD, DD, J 해당 일의 정오(12:00:00)를 기준
DAY, DY, D 한 주가 시작되는 날짜를 기준
HH, HH12, HH24 해당일의 시간을 기준
MI 해당일 시간의 분을 기준

 

 

ROUND(SYSDATE, 'CC') 함수는 현재 시스템 날짜의 세기 부분을 반올림한 후, 날짜 형식으로 반환합니다.

SELECT SYSDATE ,
	ROUND(SYSDATE,'CC'),
	ROUND(SYSDATE+10063,'CC') 
FROM DUAL;
SYSDATE ROUND(SYSDATE,'CC') ROUND(SYSDATE+10063,'CC') 
2023-06-14 21:23:23.000 2001-01-01 00:00:00.000 2101-01-01 00:00:00.000

현재 시스템 날짜가 2023년 6월 14일이라면 2001-01-01로 반환됩니다.

SYSDATE+10063는 현재 날짜(2023년 6월 14일)에 10063일을 더한 결과인 2051년 1월 1일을 기준으로 반올림합니다. 

 

 

ROUND(SYSDATE,'YYYY')는 7월 1일을 기준으로 반올림 후 날짜 형식으로 반환합니다.

SELECT SYSDATE ,ROUND(SYSDATE,'YYYY'),ROUND(SYSDATE+40,'YYYY')
FROM DUAL;
SYSDATE ROUND(SYSDATE,'YYYY' ROUND(SYSDATE+40,'YYYY')
2023-06-14 21:39:37.000 2023-01-01 00:00:00.000 2024-01-01 00:00:00.000

현재 시스템 날짜가 2023년 6월 14일이라면 2023-01-01 로 반환됩니다. SYSDATE+40은 현재날짜에서 40일을 더한 

2023-07-24일을 기준으로 반올림합니다. 

 

 

 

날짜 차이 계산

 

시간 차이 계산

'공부 > SQL' 카테고리의 다른 글

[SQL]PL/SQL - 2 조건 제어문  (0) 2023.06.16
[SQL]PL/SQL - 1  (1) 2023.06.16
오라클 숫자 관련 함수  (0) 2023.06.14
오라클 문자 관련 함수  (0) 2023.06.14
[SQL] 오라클 데이터 타입 정리  (0) 2023.06.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함