Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[SQL] 날짜 함수 (단일 행 함수 3) 본문
날짜 함수
- 날짜를 인수로 사용하며 날짜 또는 숫자를 결과로 반환
함수 | 설명 |
MONTHS_BETWEEN(date1, date2) | 두 날짜 사이의 달 수를 반환 |
ADD_MONTHS(date, n) | 지정된 날짜에 n개월을 더한 날짜를 반환 |
NEXT_DAY(date, 'char') | 지정된 날짜 이후 지정한 요일 ('char')에 해당하는 날짜를 반환 |
LAST_DAY(date) | 지정된 날짜를 포함한 달의 말일을 반환 |
ROUND(date[,'f']) | f에 지정된 단위로 반올림한 날짜를 반환 |
TRUNC(date[,'f']) | f에 지정된 단위로 절삭한 날짜를 반환 |
날짜 함수의 반올림과 버림
- ROUND 와 TRUNC
- 날짜를 가장 가까운 연도 또는 달로 반올림하거나 절삭
- 자릿수 대신 날짜의 단위에 해당하는 형식 모델을 지정
- 지정 가능한 형식 모델
형식 모델 | ROUND의 기준 |
YEAR | 해당 연도의 절반 (6월 30일) |
MONTH | 지정된 날짜가 포함되는 달의 절반 (15일) |
DD | 지정된 날짜의 정오 |
DAY | 지정된 날짜가 포함되는 주의 수요일 정오 |
- 직급이 사원인 사원들의 사원 번호, 입사일, 근무한 달 수, 입사 후 3개월 경과일(수습 종료일), 입사 후 첫 금요일 및 입사한 달의 말일을 표시
SELECT emp_id, hiredate,
TRUNC(MONTHS_BETWEEN(SYSDATE, hiredate)) 근무기간,
ADD_MONTHS(hiredate, 3) 수습종료일,
NEXT_DAY(hiredate, '금요일') 첫금요일,
LAST_DAY(hiredate) 말일
FROM y_emp
WHERE position = '사원';
- 2005년에 입사한 사원에 대하여 사원 번호, 입사일 그리고 ROUND 및 TRUNC 함수를 사용하여 입사한 달을 표시하여 비교해 본다.
SELECT emp_id, hiredate,
ROUND(hiredate, 'MONTH'), TRUNC(hiredate, 'MONTH')
FROM y_emp
WHERE hiredate LIKE '05%';
- 한글을 쓰는 국가에서 영어로 요일이름을 지정할 경우 오류가 발생한다.
- 요일에 해당하는 숫자로 이 문제를 해결할 수 있다.
- 1 = 일, 2 = 월, 3 = 화, 4 = 수, 5 = 목, 6 = 금, 7 = 토
SELECT emp_id, hiredate, NEXT_DAY(hiredate, 6) "입사 이후 첫 금요일"
FROM y_emp;
'Oracle SQL' 카테고리의 다른 글
[SQL] 함수의 중첩 (0) | 2023.04.14 |
---|---|
[SQL] 데이터 유형 변환 함수 (단일 행 함수 4) (1) | 2023.04.09 |
[SQL] 숫자 함수 (단일 행 함수 2) (0) | 2023.04.09 |
[SQL] 문자 함수 (단일 행 함수 1) (0) | 2023.04.07 |
[SQL] ORDER BY (데이터의 정렬) (0) | 2023.04.07 |
Comments