본문 바로가기
DB

[SQL] 08. (3) 단일행 날짜 함수

by NOHCODING 2021. 11. 21.
반응형

 

 

(1) 날짜 관련 함수 

 

함수명  의미 결과
SYSDATE 시스템의 현재 날짜와 시간 날짜 
MONTH_BETWEEN 두 날짜 사이의 개월 수  숫자
ADD_MONTHS 주어진 날짜에 개월을 더함  날짜 
NEXT_DAY 주어진날짜를 기준으로 돌아오는 날짜 출력 날짜 
LAST_DAY 주어진 날짜가 속한 달의 마지막 날짜 출력 날짜 
ROUND 주어진 날짜를 반올림 날짜 
TRUNC 주어진 날짜를 버림 날짜 

 

   1) MONTHS_BETWEEN 함수 

     ① 두 날짜를 입력받아 두 날짜 사이의 개월 수를 출력하는 함수임. 

     ② 일반적으로 MONTHS_BETWEEN 함수를 사용하기보다 1개월을 약 31일로 계산하기도 함. 

     ③ 날짜의 경우 어떤 방법을 쓰느냐에 따라 결과가 상당히 다를 수 있기 때문에 주의해야하며,

         회사에 따라 사용방법을 확인하고 계산 

SELECT MONTH_BETWEEN('14/09/30','14/08/31')
FROM dual;

MONTH_BETWEEN('14/09/30','14/08/31')
---------------------------------------
				1

     ④ 두 날 짜 중 큰 날짜를 먼저 써야 양수가 나옴 

SELECT MONTH_BETWEEN('14/08/31','14/09/30')
FROM dual;

MONTH_BETWEEN('14/08/31','14/09/30')
---------------------------------------
				-1

     ⑤ 두 날짜가 같은 달에 속해 있으면 특정 규칙으로 계산 된 값이 나옴

          ↓ (EX. 1개월이 29일인 2012년 2월을 조회)

SELECT MONTH_BETWEEN('12/02/329','12/02/01')
FROM dual;

MONTH_BETWEEN('12/02/329','12/02/01')
---------------------------------------
				.903225806

        ↓   (EX. 1개월이 30일인 2014년 4월을 조회)

SELECT MONTH_BETWEEN('14/04/30','14/04/01')
FROM dual;

MONTH_BETWEEN('14/04/30','14/04/01')
---------------------------------------
				.935483871

        ↓  (EX. 1개월이 31일인 2014년 5월을 조회)

SELECT MONTH_BETWEEN('14/05/31','14/05/01')
FROM dual;

MONTH_BETWEEN('14/05/31','14/05/01')
---------------------------------------
				.967741935

 

 

   2) ADD_MONTHS() 함수 

     ① ADD_MONTHS() 함수는 주어진 날짜에 숫자만큼의 달을 추가하는 함수 

SELECT SYSDATE , ADD_MONTH(SYSDATE,1)
FROM daul;

SYSDATAE	ADD_MONTH
--------------------------
13/07/24	13/08/24

 

   3) NEXT_DAY() 함수  

     ① 주어진 날짜를 기준으로 돌아오는 가장 최근 요일의 날짜를 반환하는 함수 

     ② 윈도우용과 리눅스 요은 날짜 표기 방법이 다르기에 요일 표기에 유의해야 함. 

SELECT SYSDATE, NEXT_DAY(SYSDATE, '월') FROM daul;

SYSDATE		NEXT_DAY
--------------------------
14/10/21	14/10/27

 

   4) LAST_DAY() 함수 

     ①  주어진 날짜가 속한 달의 가장 마지막 날을 출력해주는 함수

SELECT SYSDATE, LAST_DAY(SYSDATE), LAST_DAY('21/12/01')
	FROM dual;

SYSDATE  LAST_DAY LAST_DAY
-------- -------- --------
21/11/21 21/11/30 21/12/31

    

   5) 날짜의 ROUND(), TRUNC() 함수 

     ① ROUND는 낮(정오)12:00를 기준으로 주어진 날짜가 이 시간을 넘어설 경우 다음날로 출력 

     ② TRUNC은 무조건 당일로 출력 

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD:HH24:MI:SS';

Session altered.

-----------------------------------------------------------

SELECT SYSDATE, ROUND(SYSDATE), TRUNC(SYSDATE)
  2  FROM dual; 

SYSDATE 	    ROUND(SYSDATE)	TRUNC(SYSDATE)
------------------- ------------------- -------------------
2021-11-21:09:17:23 2021-11-21:00:00:00 2021-11-21:00:00:00

 

 

반응형

'DB' 카테고리의 다른 글

[SQL] 정규식 함수  (0) 2021.11.21
[SQL] 08. (5) 단일행 일반 함수  (0) 2021.11.21
[SQL] 08. (2) 단일행 숫자 함수  (0) 2021.11.21
[SQL] 08. (1) 단일행 문자 함수  (0) 2021.11.20
[SQL] 07. JOIN  (0) 2021.11.17

댓글