안녕하세요.
날짜 관련 함수는 업무 중에도 유용하게 자주 쓰일 것 같아 기록하려고 합니다.
< INDEX >
1. 날짜 간 개월 수 출력 (MONTHS_BETWEEN)
2. 개월 수 더한 날짜 출력 (ADD_MONTHS)
3. 특정 날짜 뒤에 오는 요일 날짜 출력 (NEXT_DAY)
4. 특정 날짜가 있는 달의 마지막 날짜 출력 (LAST_DAY)
5. 문자형으로 데이터 유형 변환 (TO_CHAR)
6. 날짜형으로 데이터 유형 변환하기 (TO_DATE)
1. 날짜 간 개월 수 출력 (MONTHS_BETWEEN)
1.1 MONTHS_BETWEEN(최신 날짜, 예전 날짜)
이름을 출력하고 입사한 날짜부터 오늘까지 총 몇 달을 근무했는지 출력
SELECT ename, MONTHS_BETWEEN(sysdate, hiredate)
FROM emp;
출력 결과
1.2 2018년 10월 1일에서 2019년 6월 1일 사이의 총 일수 출력
SELECT TO_DATE('2019-06-01', 'RRRR-MM-DD') - TO_DATE('2018-10-01', 'RRRR-MM-DD')
FROM DUAL;
출력 결과
1.3 2018년 10월 1일에서 2019년 6월 1일 사이의 총 주(week)수 출력
SELECT ROUND((TO_DATE('2019-06-01', 'RRRR-MM-DD') - TO_DATE('2018-10-01', 'RRRR-MM-DD')) / 7) AS "총 주수"
FROM DUAL;
출력 결과
2. 개월 수 더한 날짜 출력 (ADD_MONTHS)
2.1 2019년 5월 1일로부터 100달 뒤의 날짜 구하기 ① ADD_MONTHS
SELECT ADD_MONTHS(TO_DATE('2019-05-01', 'RRRR-MM-DD'), 100)
FROM DUAL;
출력 결과
2.2 2019년 5월 1일로부터 100일 뒤의 날짜 구하기
SELECT TO_DATE('2019-05-01', 'RRRR-MM-DD') + 100
FROM DUAL;
출력 결과
2.3 2019년 5월 1일로부터 100달 뒤의 날짜 구하기 ② INTERVAL 함수
INTERVAL 함수는 좀더 섬세하게 날짜 산술 연산 구현 가능
SELECT TO_DATE('2019-05-01', 'RRRR-MM-DD') + INTERVAL '100' MONTH
FROM DUAL;
출력 결과
2.4 2019년 5월 1일부터 1년 3개월 후의 날짜 출력
SELECT TO_DATE('2019-05-01', 'RRRR-MM-DD') + INTERVAL'1-3' YEAR(1) TO MONTH
FROM DUAL;
출력 결과
2.5 2019년 5월 1일부터 3년 후의 날짜 출력
SELECT TO_DATE('2019-05-01', 'RRRR-MM-DD') + INTERVAL '3' YEAR
FROM DUAL;
출력 결과
2.6 2019년 5월 1일부터 3년 5개월 후의 날짜 출력
SELECT TO_DATE('2019-05-01', 'RRRR-MM-DD') + TO_YMINTERVAL('03-05') AS 날짜
FROM DUAL;
출력 결과
3. 특정 날짜 뒤에 오는 요일 날짜 출력 (NEXT_DAY)
3.1 2019년 5월 22일로부터 바로 돌아올 월요일의 날짜 출력
SELECT '2019/05/22' AS 날짜, NEXT_DAY('2019/05/22', '월요일')
FROM DUAL;
출력 결과
3.2 오늘 날짜 출력
SELECT SYSDATE as "오늘 날짜"
FROM DUAL;
출력 결과
3.3 오늘부터 앞으로 돌아올 화요일의 날짜 출력
SELECT NEXT_DAY(SYSDATE, '화요일') AS "다음 날짜"
FROM DUAL;
출력 결과
3.4 2019년 5월 22일부터 100달 뒤에 돌아오는 화요일의 날짜 출력
SELECT NEXT_DAY(ADD_MONTHS('2019/05/22', 100), '화요일') AS "다음 날짜"
FROM DUAL;
출력 결과
3.5 오늘부터 100달 뒤에 돌아오는 월요일의 날짜 출력
SELECT NEXT_DAY(ADD_MONTHS(SYSDATE, 100), '월요일') AS "다음 날짜"
FROM DUAL;
출력 결과
4. 특정 날짜가 있는 달의 마지막 날짜 출력 (LAST_DAY)
4.1 2019년 5월 22일 해당 달의 마지막 날짜 출력
SELECT '2019/05/22' AS "날짜", LAST_DAY('2019/05/22') AS "마지막 날짜"
FROM DUAL;
출력 결과
4.2 오늘부터 이번달 말일까지 총 며칠 남았는지 출력
SELECT LAST_DAY(SYSDATE) - SYSDATE AS "남은 날짜"
FROM DUAL;
출력 결과
4.3 이름이 KING인 사원의 이름, 입사일, 입사한 달의 마지막 날짜 출력
SELECT ename, hiredate, LAST_DAY(hiredate)
FROM emp
WHERE ename = 'KING';
출력 결과
감사합니다.
다음 장에서는 날짜 함수 TO_CHAR, TO_DATE를 이어서 기록하도록 하겠습니다. ㅎㅎ
'데이터분석 > SQL' 카테고리의 다른 글
SQL 주석 적용/해제 오류일 경우 (Window 기준) (0) | 2023.11.25 |
---|---|
5. 날짜 관련 함수 ② (TO_CHAR, TO_DATE) (0) | 2023.11.24 |
3. SQL 대소문자 변환 함수 (UPPER, LOWER, INITCAP) (0) | 2023.11.22 |
2. SQL 비교 연산자 (LIKE) (0) | 2023.11.21 |
1. SQL - 기본 (0) | 2023.11.20 |