일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- algoritm
- n x 2 타일링 2
- Java
- select
- Eclipse
- 데이터베이스
- DP
- 문자열
- ANSI JOIN
- 반복문
- 그대로 출력하기
- 오라클
- JOIN
- Database
- SQL
- 2156
- 자바
- 소숫점처리
- 10951
- 백준
- oracle
- 데이터길이
- Dynamic Programming
- Algorithm
- 입출력
- darkest dark
- 변수
- db
- 동적계획법
- 알고리즘
- Today
- Total
Cracking Code
SQL - MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY 본문
날짜를 인자로 받아 계산하여 결과를 리턴하는 날짜 관련 함수를 알아보겠습니다.
함수를 알아보기 전에 앞서 간단한 날짜 출력문을 알아보겠습니다.
SYSDATE: 현재 날짜 출력
SYSTIMESTAMP: 현재 날짜, 시각 출력
각 컬럼에 현재 날짜 및 날짜와 시간이 잘 표시됩니다.
주의)
날짜 데이터는 그 안에 현재의 연, 월, 일, 시간 모두 포함되어 있습니다.
그 데이터를 기반으로 미리 설정된 날짜 형식에 따라 출력됩니다.
그럼, 이 날짜 데이터들을 활용한 함수들에 대해 알아볼까요?
1. MONTHS_BETWEEN
MONTHS_BETWEEN(date1, date2)
date1과 date2의 월간 차이를 계산하여 출력합니다.
사원 테이블의 부서 번호가 10인 사원들이 몇 달 근무했는지 알아볼까요?
SELECT ENAME, HIREDATE, SYSDATE,
MONTHS_BETWEEN(SYSDATE, HIREDATE) M_BETWEEN,
TRUNC(MONTHS_BETWEEN(SYSDATE, HIREDATE)) T_BETWEEN
FROM EMP
WHERE DEPTNO = 10;
MONTHS_BETWEEN 함수만 사용한 M_BETWEEN 컬럼은 날짜의 간 차이를 계산하여 월간 차이를 출력하며 월간 차이를 제외한 나머지 일, 시간 등은 소숫점으로 표시하는 것을 볼 수 있습니다.
소수점 절삭 함수인 TRUNC를 사용하면 T_BETWEEN처럼 깔끔하게 월간 차이만 표현할 수 있습니다.
2. ADD_MONTHS
ADD_MONTHS(date, n)
date에 n만큼의 월수를 더해 출력합니다.
사원 테이블의 부서 번호가 10인 사원들의 고용 날짜에 5달을 더한 것과 5달을 뺀 것을 출력해봅시다.
SELECT ENAME, HIREDATE,
ADD_MONTHS(HIREDATE, 5) A_MONTH,
ADD_MONTHS(HIREDATE, -5) M_MONTH
FROM EMP
WHERE DEPTNO = 10;
날짜에 다섯 달의 추가와 뺀 날짜가 자동으로 계산되어 년/월/일 형태로 잘 출력되는 것을 볼 수 있습니다.
3. NEXT_DAY
NEXT_DAY(date, string | n)
date 날짜 기준으로 string 요일의 날짜를 구합니다.
날짜는 string으로 표현하거나 숫자 n으로 표현할 수 있습니다.
여기서 잠깐 Oracle DB의 요일에 대해 알아볼까요?
일, 일요일, 1 / 월, 월요일, 2
화, 화요일, 3 / 수, 수요일, 4
목, 목요일, 5 / 금, 금요일, 6
토, 토요일, 7
시스템 언어에 따라서 string은 다르게 적용됩니다.
만약 영어로 설정되어 있다면
일요일에 해당하는 영어 SUN, SUNDAY 문자열로 표현할 수 있습니다.
오늘 날짜 2020-07-18 기준으로 돌아오는 수요일을 출력해보겠습니다.
SELECT NEXT_DAY(SYSDATE, '수')
FROM DUAL;
20/07/22가 출력되었습니다. 달력을 확인해보니 2020년 7월 22일은 수요일입니다.
잘 출력되었네요. 😁
'Database' 카테고리의 다른 글
SQL - CASE (0) | 2020.07.19 |
---|---|
SQL - TO_CHAR, TO_NUMBER, TO_DATE (0) | 2020.07.19 |
SQL - CEIL, FLOOR, ROUND,TRUNC (0) | 2020.07.17 |
SQL - REPLACE (0) | 2020.07.16 |
SQL - LENGTH (0) | 2020.07.16 |