Database/SQL

[SQL] 날짜 함수

Untitled_Blue 2023. 5. 26. 14:44
반응형

안녕하세요. 이번 글은 날짜 함수에 대한 설명입니다.

- 날짜 함수란?

  • 날짜 함수 : 날짜 데이터를 전반적으로 다룰 수 있도록 도와주는 함수

- What is 'SYSDATE'?

  • SYSDATE : 시스템 상 오늘의 날짜가 출력하는 함수
select SYSDATE from DUAL;

다음과 같이 SYSDATE만 입력하면 현재 날짜를 확인할 수 있다.

- 날짜에 숫자를 더하고 빼면? 과거와 미래가 나온다 !

select SYSDATE + 1, SYSDATE + 7, SYSDATE - 30 from DUAL;

다음과 같이 날짜에 숫자를 더하고 빼면 각각 몇 일 뒤의 날짜와 몇 일 전의 날짜를 출력할 수 있음을 확인 가능하다.

- 어느 달의 첫 날과 마지막 날은 언제일까?

  • NEXT_DAY(날짜, 요일 문자) : 날짜를 기준으로 가장 근접한 요일의 날짜를 반환하는 함수
  • LAST_DAY(날짜) : 날짜를 기준으로 해당 달의 마지막 날의 날자를 반환하는 함수
select SYSDATE as "오늘 날짜",
       NEXT_DAY(SYSDATE, 1) as "다음 월요일", 
       NEXT_DAY(SYSDATE, 2) as "다음 화요일", 
       NEXT_DAY(SYSDATE, 3) as "다음 수요일",
       NEXT_DAY(SYSDATE, 4) as "다음 목요일",
       NEXT_DAY(SYSDATE, 5) as "다음 금요일",
       NEXT_DAY(SYSDATE, 6) as "다음 토요일",
       NEXT_DAY(SYSDATE, 7) as "다음 일요일" from DUAL;

다음 소스코드를 통해 현재 날짜를 기준으로 바로 다음 요일이 각각 언제인지를 날짜 데이터로 반환해준다는 점을 확인할 수 있다. 물론 NEXT_DAY('20/05/03', 1) 같이 현재 날짜뿐만 아니라 지정 날짜를 기준으로도 계산이 가능하다.

select SYSDATE as "오늘 날짜", LAST_DAY(SYSDATE) from DUAL;

다음 소스코드를 통해 현재 날짜를 기준으로 해당 달의 마지막 날을 날짜 형식으로 반환해준다는 점을 확인 가능하다.

상단 이미지는 필자의 PC에서 확인할 수 있는 윈도우 기본 기능인 달력이다. 여기서 달력에 파란색으로 되어있는 부분은 오늘의 날짜를 표시해주는데 26일이 오늘 날짜임과 5월의 마지막 날은 31일이미로 오늘의 날짜와 해당 달의 마지막 날의 날짜 데이터를 확인할 수 있다.

- 몇 개월 뒤의 날짜를 구하는 함수

  • ADD_MONTHS(날짜, 개월 수) : 날짜에 개월 수를 더해서 몇 개월 전과 후의 날짜를 반환하는 함수
select ADD_MONTHS(SYSDATE, 3), ADD_MONTHS(SYSDATE, -2), ADD_MONTHS('22/02/02', 6) from DUAL;

다음과 같이 양수를 쓰면 몇 개월 뒤의 날짜가 나오고 반대로 음수를 쓰면 몇 개월 전의 날짜가 출력됨을 알 수 있다. 또한 SYSDATE 뿐만 아니라 지정 날짜를 사용해서도 전과 후의 날짜를 반환받을 수 있음 또한 확인 가능하다.

- 날짜와 날짜 사이의 차이를 보여주는 함수

  • MONTHS_BETWEEN(날짜1, 날짜2) : 날짜2와 날짜1의 개월 수 차이를 반환하는 함수
select MONTHS_BETWEEN(SYSDATE, '23/01/01'), ROUND(MONTHS_BETWEEN(SYSDATE, '23/01/01')) from DUAL;

다음과 같이 현재 날짜와 2023년 새해 첫날이 몇 달이 차이 나는지에 대한 결과를 조회 가능하다. 이때 계산할 때 일수와 시간차이에 대한 계산도 같이 진행하기 때문에 . 뒤에 소수점에 존재하는데 정확히 개월수만 확인하기 위해 ROUND() 함수를 통해 반올림 계산할 수 있다는 점도 확인할 수 있다.

 

다음 글은 형 변환과 DECODE과 CASE 조건문에 대한 설명입니다.

반응형