나의 개발일지

[SQL] 날짜 함수 (단일 행 함수 3) 본문

Oracle SQL

[SQL] 날짜 함수 (단일 행 함수 3)

YoonJuHan 2023. 4. 9. 14:14

날짜 함수

  1. 날짜를 인수로 사용하며 날짜 또는 숫자를 결과로 반환
함수 설명
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에 지정된 단위로 절삭한 날짜를 반환

 

날짜 함수의 반올림과 버림

  1. ROUND 와 TRUNC
    1. 날짜를 가장 가까운 연도 또는 달로 반올림하거나 절삭
    2. 자릿수 대신 날짜의 단위에 해당하는 형식 모델을 지정
    3. 지정 가능한 형식 모델
형식 모델 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;

Comments