Oracle

날짜 관련 함수 모음 및 예제

고인돌개발자 2021. 9. 27. 17:02

▶ 출처 : https://coding-factory.tistory.com/440 (사용허락 후 기재함)

더보기

날짜 계산 (연산자)

SELECT SYSDATE + 100, --현재날짜 +100SYSDATE - 100, --현재날짜 -100SYSTIMESTAMP + 100, --현재날짜 +100SYSTIMESTAMP - 100 --현재날짜 -100FROM DUAL

위와같이 + , - 연산자를 활용하여 간단한 날짜 계산이 가능합니다.

 

날짜 계산 (함수)

SELECT ADD_MONTHS(SYSDATE,6), --현재시간 + 6개월 뒤 LAST_DAY(SYSDATE), --해당월 마지막 일자 계산 NEXT_DAY(SYSDATE,'일요일'), --다음 주 일요일 계산 MONTHS_BETWEEN(SYSDATE, SYSDATE-100) --DATE1과 DATE2의 개월 수 반환 FROM DUAL

  • ADD_MONTHS(date, integer) : ADD_MONTHS함수는 매개변수 DATE에 매개변수 INTEGER만큼의 월을 더한 날짜를 리턴합니다.
  • LAST_DATE(date) : LASTE_DAY함수는 현재 월의 마지막 일자를 리턴합니다.
  • NEXT_DAY(date, char) : NEXT_DAY함수는 매개변수 date의 다음 주 char(요일)의 날짜를 리턴합니다.
  • MONTHS_BETWEEN(date1, date2) : MONTHS_BETWEEN함수는 매개변수 date1과 date2 사이의 개월수를 리턴합니다.

다양한 날짜 계산 EXAMPLE

SELECT
TO_CHAR(SYSDATE ,'yyyy/mm/dd'), --오늘 날짜  
TO_CHAR(SYSDATE + 1 ,'yyyy/mm/dd'), --내일 날짜  
TO_CHAR(SYSDATE -1 ,'yyyy/mm/dd'), --어제 날짜  
TO_CHAR(TRUNC(SYSDATE,'dd') ,'yyyy/mm/dd hh24:mi:ss'), -- 오늘 정각 날짜
TO_CHAR(TRUNC(SYSDATE,'dd') + 1,'yyyy/mm/dd hh24:mi:ss'), -- 내일 정각 날짜
TO_CHAR(SYSDATE + 1/24/60/60 ,'yyyy/mm/dd hh24:mi:ss'), -- 1초 뒤 시간
TO_CHAR(SYSDATE + 1/24/60 ,'yyyy/mm/dd hh24:mi:ss'), -- 1분 뒤 시간
TO_CHAR(SYSDATE + 1/24 ,'yyyy/mm/dd hh24:mi:ss'), -- 1일 뒤 시간
TO_CHAR(TRUNC(SYSDATE,'mm') ,'yyyy/mm/dd'), --이번 달 시작날짜
TO_CHAR(LAST_DAY(SYSDATE) ,'yyyy/mm/dd'), --이번 달 마지막 날
TO_CHAR(trunc(ADD_MONTHS(SYSDATE, + 1),'mm') ,'yyyy/mm/dd'), --다음 달 시작날짜
TO_CHAR(ADD_MONTHS(SYSDATE, 1) ,'yyyy/mm/dd hh24:mi:ss'), -- 다음달 오늘 날자
TO_CHAR(TRUNC(SYSDATE, 'yyyy') ,'yyyy/mm/dd'), --올해 시작 일
TO_CHAR(TRUNC(ADD_MONTHS(SYSDATE, -12), 'dd'),'yyyy/mm/dd'), --작년 현재 일
TO_DATE(TO_CHAR(SYSDATE, 'YYYYMMDD')) - TO_DATE('19930315'), -- 두 날짜 사이 일수 계산
MONTHS_BETWEEN(SYSDATE, '19930315'), -- 두 날짜 사이의 월수 계산
TRUNC(MONTHS_BETWEEN(SYSDATE, '19930315')/12,0) --두 날짜 사이의 년수 계산
FROM
DUAL;

블로그 참고 : https://gent.tistory.com/331


SYSDATE vs CURRENT_DATE vs SYSTIMESTAMP vs CURRENT_TIMESTAMP

-- sys : 설치된 오라클 서버의 기본 세팅 시간 값 , 변경X
-- current : 접속한 사용자의 세션에 설정된 시간대 : 기본 오라클 서버의 기본 세팅시간 , 
             -- alter session set time_zone='-1:0'; alter session set time_zone='09:00'; 
-- session 생명주기 : 사용자가 접속 후 접속을 종료할 때까지 , 명령어 alter session 
  
SELECT 
    SYSDATE,           -- 현재 시스템 시간 년/월/시/분/초
    CURRENT_DATE,      -- 현재 세션 시간  년/월/시/분/초
    SYSTIMESTAMP,      -- 현재 시스템 시간 년/월/시/분/초 밀리세컨드
    CURRENT_TIMESTAMP  -- 현재 세션 시스템 시간 년/월/시/분/초 밀리세컨드
from dual;