DB(SQL)

[SQL] 날짜 관련 함수

이나피스 2022. 3. 26. 20:07
반응형

SYSDATE

현재 시스템 날짜를 반환

 

MONTHS_BETWEEN

두 날짜 사이의 개월수 반환

DATE1-DATE2 = 개월수로 계산되어 DATE2가 더 미래인 경우 음수로 반환된다

MONTHS_BETWEEN(DATE1, DATE2)
--각 직원별 근무일수, 근무개월수
SELECT EMP_NAME
       ,FLOOR(SYSDATE-HIRE_DATE)||'일' 근무일수
       ,FLOOR(MONTHS_BETWEEN(SYSDATE,HIRE_DATE))||'개월' 근무개월수
FROM EMPLOYEE;

 

ADD_MONTHS

특정 날짜에 입력 숫자만큼의 개월수를 더한 날짜를 반환

ADD_MONTHS(DATE, NUMBER)
--오늘 날짜로부터 5개월 이후
SELECT ADD_MONTHS(SYSDATE,5)
FROM DUAL;

--오늘부터 100일후
SELECT SYSDATE+100 AS "100일후"
FROM DUAL;

--사원들의 입사 1주년
SELECT EMP_NAME, HIRE_DATE, ADD_MONTHS(HIRE_DATE,12) AS "입사 1주년"
FROM EMPLOYEE;

 

NEXT_DAY

특정 날짜에서 가장 가까운 입력 요일을 찾아 해당 날짜를 반환

NEXT_DAY(특정날짜, 찾고싶은요일)
SELECT NEXT_DAY(SYSDATE,'토요일')
FROM DUAL;
SELECT NEXT_DAY(SYSDATE,'토')
FROM DUAL;

-- 1:일요일 2:월 3:화 4:수 5:목 6:금 7:토
SELECT NEXT_DAY(SYSDATE,7)
FROM DUAL;

--토요일 : SATURDAY => 언어가 한글로 되어있어서 오류남, 언어에 AMERICAN 설정시 실행됨
SELECT NEXT_DAY(SYSDATE, 'SATURDAY')
FROM DUAL;

 

LAST_DAY

특정 날짜 달의 마지막 날짜를 구하여 반환

LAST_DAY(DATE)
SELECT LAST_DAY(SYSDATE)
FROM DUAL;

--이름, 입사일, 입사한달의 마지막날 조회
SELECT EMP_NAME, HIRE_DATE, LAST_DAY(HIRE_DATE)
FROM EMPLOYEE;

 

EXTRACT

특정 날짜의 년 OR 월 OR 일 정보를 추출하여 반환

EXTRACT(YEAR FROM 날짜)

EXTRACT(MONTH FROM 날짜)

EXTRACT(DAY FROM 날짜)
SELECT EXTRACT(YEAR FROM SYSDATE) AS 년
      ,EXTRACT(MONTH FROM SYSDATE) AS 월 
      ,EXTRACT(DAY FROM SYSDATE) AS 일
FROM DUAL;

--사원명, 입사년도, 입사월, 입사일 조회
SELECT EMP_NAME AS 사원명
      ,EXTRACT(YEAR FROM HIRE_DATE) AS 입사년
      ,EXTRACT(MONTH FROM HIRE_DATE) AS 입사월
      ,EXTRACT(DAY FROM HIRE_DATE) AS 입사일
FROM EMPLOYEE;
반응형