CoDream

[SQL] 단일행 함수 > 날짜 함수 본문

[DB]Oracle SQL/Oracle SQL 이론

[SQL] 단일행 함수 > 날짜 함수

코잠 2024. 3. 23. 12:10
728x90
반응형

<날짜 함수>

 

SYSDATE (현재)

    • 시스템의 현재 날짜와 시간을 반환한다.
    SELECT SYSDATE FROM DUAL;
    

 

 

MONTHS_BETWEEN (기간)

  • [문법] MONTHS_BETWEEN(DATE1, DATE2)
    • 입력받은 두 날짜 사이의 개월 수를 반환한다.
    • 결과값은 NUMBER 타입이다.
    -- EMPLOYEE 테이블에서 직원명 입사일, 근무개월수 조회
    SELECT EMP_NAME, HIRE_DATE, MONTHS_BETWEEN(SYSDATE,HIRE_DATE)AS 근무개월수
    FROM EMPLOYEE;
    

 

 

ADD_MONTHS (몇 개월 이후)

  • [문법] ADD_MONTHS(DATE, NUMBER)
    • 특정 날짜에 입력받는 숫자만큼의 개월 수를 더한 날짜를 리턴한다.
    • 결과값은 DATE 타입이다.
    -- 지금 날짜에서 +3개월
    SELECT ADD_MONTHS(SYSDATE,3) FROM DUAL;
    

 

 

NEXT_DAY (요일의 가장 가까운 날짜)

  • [문법] NEXT_DAY(DATE, 요일(문자|숫자))
    • 특정 날짜에서 구하려는 요일의 가장 가까운 날짜를 리턴한다.
    • 결과값은 DATE 타입이다.
    - -오늘이랑 가장 가까운 '목요일'
    SELECT SYSDATE, NEXT_DAY(SYSDATE, '목요일') FROM DUAL;
    SELECT SYSDATE, NEXT_DAY(SYSDATE, '화') FROM DUAL;
    SELECT SYSDATE, NEXT_DAY(SYSDATE, 1) FROM DUAL;-- 1:일요일, 2:월요일, ..., 7:토요일
    SELECT SYSDATE, NEXT_DAY(SYSDATE, 'SUNDAY') FROM DUAL; -- 에러(현재 언어가 KOREAN이기 때문에)
    
    ALTER SESSION SET NLS_LANGUAGE = AMERICAN; -- 언어 변경
    SELECT SYSDATE, NEXT_DAY(SYSDATE, 'SUNDAY') FROM DUAL;
    SELECT SYSDATE, NEXT_DAY(SYSDATE, 'MON') FROM DUAL;
    SELECT SYSDATE, NEXT_DAY(SYSDATE, 6) FROM DUAL;
    SELECT SYSDATE, NEXT_DAY(SYSDATE, '목') FROM DUAL; -- 에러 발생
    SELECT SYSDATE, NEXT_DAY(SYSDATE, '목요일') FROM DUAL; -- 에러 발생
    
    ALTER SESSION SET NLS_LANGUAGE = KOREAN; -- 언어 변경
    

 

 

 

LAST_DAY (월의 마지막 날짜)

  • [문법] LAST_DAY(DATE)
    • 해당 월의 마지막 날짜를 반환한다.
    • 결과값은 DATE 타입이다.
    *SELECT LAST_DAY(SYSDATE) FROM DUAL;*
    

 

 

 

EXTRACT (연도, 월, 일 )

  • EXTRACT(YEAR|MONTH|DAY FROM DATE);
    --포멧변경
    ALTER SESSION SET NLS_DATE_FORMAT= 'YYYY-NN-DD HH:NI:SS';
    ALTER SESSION SET NLS_DATE_FORMAT= 'RR/MM/DD';
    
    SELECT SYSDATE FROM DUAL;
    
  • 특정 날짜에서 연도, 월, 일 정보를 추출해서 반환한다.
  • YEAR : 연도만 추출
  • MONTH : 월만 추출
  • DAY : 일만 추출
  •  결과값은 NUMBER 타입이다.
728x90
반응형