전체 방문자
오늘
어제
21종
종이의 코딩 공부방
21종
  • 분류 전체보기 (171)
    • JAVA (64)
    • Springboot (46)
      • 블로그만들기 (45)
    • Database (60)
      • Oracle (60)
    • 프로젝트 3 (CELOVER) (0)
    • 개발서버 구축 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
21종

종이의 코딩 공부방

Database/Oracle

[Oracle] 함수(FUNCTION)_날짜 처리 함수

2023. 7. 2. 23:07

    < 날짜 처리 함수 >


* SYSDATE

시스템 날짜 및 시간 반환 (현재 날짜 및 시간)

SELECT SYSDATE FROM DUAL;


* MONTHS_BETWEEN(DATE1, DATE2)

두 날짜 사이의 개월 수 => 내부적으로 DATE1 - DATE2 후 나누기 30, 31 이 진행될꺼임
    => 결과값은 NUMBER 타입

SELECT EMP_NAME, HIRE_DATE, FLOOR(SYSDATE - HIRE_DATE) || '일' AS "근무일수",
CEIL(MONTHS_BETWEEN (SYSDATE, HIRE_DATE)) || '개월' AS "근무개월수"
FROM EMPLOYEE;


* ADD_MONTHS(DATE, NUMBER)

 특정날짜에 해당 숫자만큼의 개월 수를 더해서 날짜를 리턴
    => 결과값 : DATE 타입

SELECT ADD_MONTHS(SYSDATE, 6) FROM DUAL;

 

-- EMPLOYEE 에서 사원명, 입사일, 입사후 6개월이 된 날짜 조회
SELECT EMP_NAME, HIRE_DATE, ADD_MONTHS(HIRE_DATE, 6)
FROM EMPLOYEE;


 * NEXT_DAY(DATE, 요일)

특정 날짜 이후에 가까운 해당 요일의 날짜를 반환해주는 함수
    => 결과값은 DATE 타입

SELECT SYSDATE, NEXT_DAY(SYSDATE, '금요일') FROM DUAL;

 

SELECT SYSDATE, NEXT_DAY(SYSDATE, '금') FROM DUAL;

 

-- 1. 일요일, 2. 월요일, ...
SELECT SYSDATE, NEXT_DAY(SYSDATE, 6) FROM DUAL;

 

SELECT SYSDATE, NEXT_DAY(SYSDATE, 'FRIDAY') FROM DUAL;  -- 현재 언어가 KOREAN이기 때문에 안됨

 

FRIDAY를 사용하기 위해서는 언어를 변경해줘야한다.

-- 언어 변경
-- 1.언어 조회
SELECT * FROM NLS_SESSION_PARAMETERS;
-- 2. 언어 변경
ALTER SESSION SET NLS_LANGUAGE = AMERICAN;
SELECT SYSDATE, NEXT_DAY(SYSDATE, 'FRIDAY') FROM DUAL;  -- 됨
SELECT SYSDATE, NEXT_DAY(SYSDATE, '금') FROM DUAL; -- 안됨

ALTER SESSION SET NLS_LANGUAGE = KOREAN;    -- 다시 한국어로 변경

* LAST_DAY(DATE)

 해당 월의 마지막 날짜를 구해서 반환
    => 결과값 DATE 타입

SELECT LAST_DAY(SYSDATE) FROM DUAL;

 

-- EMPLOYEE 에서 사원명, 입사일, 입사한달의 마지막 날짜, 입사한 달에 근무한 일수
SELECT EMP_NAME, HIRE_DATE, LAST_DAY(HIRE_DATE), LAST_DAY(HIRE_DATE) - HIRE_DATE
FROM EMPLOYEE;


* EXTRACT 

특정 날짜로부터 년도 | 월 | 일 값을 추출해서 반환하는 함수

 

    EXTRACT (YEAR FROM DATE) : 년도만 추출
    EXTRACT (MONTH FROM DATE) : 월만 추출
    EXTRACT (DAY FROM DATE) : 일만 추출
    
    => 결과값은 NUMBER 타입

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

    'Database/Oracle' 카테고리의 다른 글
    • [Oracle] 함수(FUNCTION)_NULL 처리 함수
    • [Oracle] 함수(FUNCTION)_형 변환 함수
    • [Oracle] 함수(FUNCTION)_숫자 처리 함수
    • [Oracle] 함수(FUNCTION)_문자 처리 함수
    21종
    21종
    코딩 공부한 것 정리하려고 만든 블로그

    티스토리툴바