SQL

SQL4 (날짜간 개월 수 출력 MONTHS_BETWEEN / 개월 수 더한 날짜 출력 ADD_MONTHS / 특정 날짜 뒤 오는 날짜 출력 NEXT_DAY)

아리빠 2023. 4. 25. 20:14

●날짜 간 개월 수 출력하기

1. 이름을 출력하고, 입사한 날짜부터 오늘까지 총 몇달 근무했는지 출력해보기

sysdate : 오늘 날짜 확인하는 함수 

MONTHS_BETWEEN: 날짜를 다루는 함수, 날짜 값 입력받아 숫자 값을 출력

MONTHS_BETWEEN(최신 날짜, 예전 날짜)

 

MONTHS_BETWEEN 함수를 사용하지 않을 시 

SELECT TO_DATE('yyyy-mm-dd' , 'RRRR-MM-DD') - TO_DATE('yyyy-mm-dd' , 'RRRR-MM-DD')
FROM dual;

TO_DATE 함수가 yyyy.mm.dd 의 연도, 달, 일 - RRRR.MM.DD 으로 명시

 


●개월 수 더한 날짜 출력하기

2. 현재 날짜로부터 100달 뒤의 날짜 출력하기

ADD_MONTHS 함수 사용

 

100일 후의 날짜는 

 

INTERVAL 

INTERVAL함수 사용하면 좀 더 섬세한 계산이 가능하다

INTERVAL 표현식 설명
INTERVAL '4' YEAR AN INTERVAL OF 4YEARS 0 MONTHS
INTERVAL '123'(3) AN INTERVAL OF 123 YEARS 0 MONTHS
INTERVAL '6'MONTHS(3) AN INTERVALOF 6 MONTHS
INTERVAL '600'MONTHS(3) AN INTERVALOF 600 MONTHS
INTERVAL '400'DAYS(3) 400DAYS

INTERVAL 사용 시 연도가 한 자리인 경우는 YEAR 사용, 연도가 3자리인 경우 YEAR(3) 사용

 

 

N년 M개월 후의 날짜를 출력하고 싶을때 

TO_YMINTERVAL 함수 사용

SELECT TO_DATE('2023-04-25' , 'RRRR-MM-DD') + TO_YMINTERVAL('0N-0M') as 날짜
FROM DUAL;

●특정 날짜 뒤에 오는 요일 날짜 출력

3. 현재로부터 바로 돌아올 화요일 날짜 출력해보기

 

오늘 날짜 출력 쿼리

SELECT SYSDATE as 오늘 날짜
FROM DUAL;

-> 오늘부터 앞으로 돌아올 n요일의 날짜 출력하는 쿼리 

SELECT NEXT_DAY(SYSDATE, 'n요일') as "다음 날짜"
FROM DUAL;

-> 현재로부터 n달 뒤에 돌아오는 m요일의 날짜 출력하는 쿼리

SELECT NEXT_DAY(ADD_MONTHS(SYSDATE , n), 'm요일') as "다음 날짜"
FROM DUAL;

 


●특정 날짜가 있는 달의 마지막 날짜 출력하기

4. yyyy.mm.yy 해당 달의 마지막 날짜 출력하기

오늘부터 이번달 말까지 총 며칠 남았는지 출력하는 쿼리

SELECT LAST_DAY(SYSDATE) - SYSDATE as "남은 날짜"
FROM DUAL;

 


5. 이름이 KING 인 사원의 이름, 입사일, 입사 한 달의 마지막 날짜 출력하기