Database/Oracle

[SQL]DML(SELECT문)(4) - 날짜 관련 함수

Ma_Sand 2022. 3. 21. 00:21
반응형

날짜와 관련된 함수

  : DATE 타입 - 연도, 월, 일, 시, 분, 초를 모두 포함한 자료형

 

 

 

 (1) SYSDATE

   : 현재 시스템의 날짜를 반환한다.

SELECT SYSDATE
FROM DUAL;  -- 현재 시스템 날짜 출력 22/03/21

 

 

 

 (2) MONTHS_BETWEEN

   : MONTHS_BETWEEN(DATE1, DATE2) - 두 날짜 사이의 개월 수를 반환한다.

  - 결과값은 숫자(NUMBER)로 반환된다.

  - DATE2가 먼 미래의 날짜라면 음수로 반환된다.

 

 - 직원들의 근무일수와 근무월수 반환하기

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

 

 

 

 

 

 

 

 

 (3) ADD_MONTHS

   : ADD_MONTHS(DATE, NUMBER) - 특정 날짜에 해당 숫자 만큼 개월 수롤 더해서 반환한다.

  - 결과값은 DATE 타입으로 반환된다.

SELECT ADD_MONTHS(SYSDATE, 3)
FROM DUAL;  -- 22/06/21

SELECT SYSDATE + 100 "100일 후"
FROM DUAL;  -- 22/06/29

 

 

 

 (4) NEXT_DAY

   : NEXT_DAY(DATE, 요일(문자/숫자)) - 특정 날짜에서 가장 가까운 요일을 찾아 그 날짜를 반환한다.

  - 결과값은 DATE 타입으로 반환된다.

 

 - 요일을 문자로 입력 시

SELECT NEXT_DAY(SYSDATE, '토요일')
FROM DUAL;  -- 22/03/26
-- '토요일' 외에 '토'라고 입력해도 된다.
-- 그러나 'SAT'이나 'SATURDAY'는 안된다. 왜냐하면 언어 설정이 한국어로 되어 있기 때문이다.
-- 이는 언어 설정을 AMETICAN으로 바꾸면 가능하다. 바꾼 후엔 영어 문자만 가능하다.

-- 영어로 언어 변경 ARTER SESSION SET NLS_LANGUAGE = AMERICAN;
-- 한국어로 언어 변경 ARTER SESSION SET NLS_LANGUAGE = KOREAN;

 

 - 요일을 숫자로 입력 시

   1: 일, 2: 월, 3: 화, 4: 수, 5: 목, 6: 금, 7: 토

SELECT NEXT_DAY(SYSDATE, 7)
FROM DUAL;  -- 22/03/26  -- 토요일

 

 

 

 (5) LAST_DAY

   : LAST_DAY(DATE) - 해당 특정 날짜 월의 마지막 날짜를 구해서 반환한다.

  - 결과값은 DATE 타입으로 반환한다.

SELECT LAST_DAY(SYSDATE)
FROM DUAL;  -- 22/03/31

 

 

 

 (6) EXTRACT

   : 연도 또는 월, 일 정보를 추출하여 반환한다.

  - EXTRACT(YEAR FROM DATE) : 특정 날짜로부터 연도만 추출한다.

  - EXTRACT(MONTH FROM DATE) : 특정 날짜로부터 월만 추출한다.

  - EXTRACT(DAY FROM DATE) : 특정 날짜로부터 일만 추출한다.

SELECT EXTRACT(YEAR FROM SYSDATE) "연도"
     , EXTRACT(MONTH FROM SYSDATE) "월"
     , EXTRACT(DAY FROM SYSDATE) "일"
FROM DUAL;

 

반응형