반응형

오라클 날짜 함수입니다.

날짜 함수는 NUMBER형 or DATE형을 Return 합니다.

오라클 날짜 함수는 연산이 가능하면 1이 [하루 / 24시간]을 의미합니다.

 

 

날짜 함수 연산

 

연 산 결과 Type 설명
날짜 + 숫자 날짜 특정한 날로 부터 숫자를 더한(며칠 후) 날짜 계산
날짜 - 숫자 날짜 특정한 날로 부터 숫자를 뺀(며칠 전) 날짜 계산
날짜 - 날짜 숫자 두 날짜 사이의 차

 

SYSDATE

SYSDATE 함수는 현재 일자와 시간을 반환합니다.

 

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') AS "현재시간"
  FROM DUAL ;
 
SELECT TO_CHAR(SYSDATE-1,'YYYY-MM-DD HH24:MI:SS') AS "하루전 현재시간"
  FROM DUAL ;
 
SELECT TO_CHAR(SYSDATE-1/24,'YYYY-MM-DD HH24:MI:SS') AS "1시간전 시간"
  FROM DUAL ;

 

 

SYSTIMESTAMP

Systimestamp 함수는 TIME STAMP 값을 반환하며

10억 분의 1초까지 표현할 수 있습니다.

 

-- 현재 날짜를 3자리 밀리 SEC 까지 구함
SELECT TO_CHAR(SYSTIMESTAMP,'YYYY-MM-DD HH24:MI:SS.FF3')  
  FROM DUAL ;
 
-- 현재 날짜를 9자리 밀리 SEC 까지 구함
SELECT TO_CHAR(SYSTIMESTAMP,'YYYY-MM-DD HH24:MI:SS.FF9')  
  FROM DUAL ;
 
-- 1시간전 시간  
SELECT TO_CHAR(SYSTIMESTAMP -1/24,'RRRR-MM-DD HH24:MI:SS')
  FROM DUAL ;

 

 

ADD_MONTHS(m1, m2)

ADD_MONTHS 함수는 m1의 날짜에 m2의 달을 더한 값을 반환합니다.

 

-- SYSDATE를 이용한 현재 날짜에서 3개월 후
SELECT TO_CHAR(ADD_MONTHS(SYSDATE,3),'YYYY-MM-DD')  "3개월 후"
  FROM DUAL; 
 
-- SYSDATE를 이용한 현재 날짜에서 3개월 전
SELECT TO_CHAR(ADD_MONTHS(SYSDATE,-3),'YYYY-MM-DD')  "3개월 전"
  FROM DUAL; 
 
-- TIMESTAMP를 이용한 현재 날짜에서 2개월 후
SELECT TO_CHAR(ADD_MONTHS(SYSTIMESTAMP, 2),'YYYY-MM-DD')  "2개월 후"
  FROM DUAL;
 
-- TIMESTAMP를 이용한 현재 날짜에서 2개월 전
SELECT TO_CHAR(ADD_MONTHS(SYSTIMESTAMP, -2),'YYYY-MM-DD')  "2개월 전"
  FROM DUAL;

 

 

MONTHS_BETWEEN(m1, m2)

m1과 m2 사이의 달의 수를 Number형으로 반환합니다.

 

-- 두 일자 사이에 달의 수를 조회하는 예제
SELECT MONTHS_BETWEEN(SYSDATE, ADD_MONTHS(SYSDATE, 5))  "Month"  
  FROM DUAL;
 
 결과
 ----------------
 -5
 
-- 두 일자 사이에 달의 수를 조회하는 예제
SELECT MONTHS_BETWEEN(SYSDATE, ADD_MONTHS(SYSDATE, -7))  "Month"  
  FROM DUAL;
 
 결과
 ----------------
 7

 

 

LAST_DAY(d)

d 날의 마지막 날짜를 반환한다.

 

-- LAST_DAY
SELECT SYSDATE AS "현재 시간", 
	LAST_DAY(SYSDATE) AS "이달 마지막날 현재 시간"
  FROM DUAL;

 

 

NEXT_DAY(d, n)

 

d 날짜에서 명시된(n) 다음 요일을 반환한다.

1(일) / 2(월) / 3(화) / 4(수) / 5(목) / 6(금) / 7(토)

 

-- NEXT_DAY
SELECT NEXT_DAY(SYSDATE, 3) "다음 화요일 현재 시간"
  FROM DUAL;
 
 
-- NEXT_DAY
SELECT NEXT_DAY(SYSDATE, 6) "다음 금요일 현재 시간"
  FROM DUAL;

 

 

ROUND(d[,F])

Round 함수는 반올림한다.

F가 연도라면 연도 단위로 달이면 달로 일이면 일 단위로 반올림한다.

F가 생략되면 날짜를 가장 가까운 날짜로 반올림한다

-- 년 반올림 
-- 2020-01-01 00:00:00
SELECT TO_CHAR(ROUND(TO_DATE('2020-03-16 21:00:00',
                           'YYYY-MM-DD HH24:MI:SS'), 'YEAR'),
               	'YYYY-MM-DD HH24:MI:SS')  
  FROM DUAL;
 
-- 년 반올림 
-- 2021-01-01 00:00:00
SELECT TO_CHAR(ROUND(TO_DATE('2020-07-16 21:00:00',
                           'YYYY-MM-DD HH24:MI:SS'), 'YEAR'),
               	'YYYY-MM-DD HH24:MI:SS')  
  FROM DUAL;

-- 달 반올림 
-- 2020-03-01 00:00:00
  SELECT TO_CHAR(ROUND(TO_DATE('2020-03-15 21:00:00',
                             'YYYY-MM-DD HH24:MI:SS'), 'MONTH'),
               'YYYY-MM-DD HH24:MI:SS')  
  FROM DUAL;

-- 달 반올림 
-- 2020-04-01 00:00:00
 SELECT TO_CHAR(ROUND(TO_DATE('2020-03-16 21:00:00',
                             'YYYY-MM-DD HH24:MI:SS'), 'MONTH'),
               'YYYY-MM-DD HH24:MI:SS')  
  FROM DUAL;
 
-- 일 반올림 
-- 2020-03-16 00:00:00 
SELECT TO_CHAR(ROUND(TO_DATE('2020-03-16 09:00:00',
                             'YYYY-MM-DD HH24:MI:SS'), 'DD'),
               'YYYY-MM-DD HH24:MI:SS')  
  FROM DUAL;
 
-- 일 반올림 
-- 2020-03-17 00:00:00 
SELECT TO_CHAR(ROUND(TO_DATE('2020-03-16 21:00:00',
                             'YYYY-MM-DD HH24:MI:SS'), 'DD'),
               'YYYY-MM-DD HH24:MI:SS')  
  FROM DUAL;

 

 

TRUNC(d[,F])

Trunc 함수는 절삭한다.

F가 연도라면 연도 단위로 달이면 달로 일이면 일 단위로 절삭한다.

F가 생략되면 날짜를 가장 가까운 날짜로 절삭한다.

 

-- 2020-01-01 00:00:00
SELECT TO_CHAR(TRUNC(TO_DATE('2020-03-16 21:00:00',
                             'YYYY-MM-DD HH24:MI:SS'), 'YEAR'),
              'YYYY-MM-DD HH24:MI:SS')  
  FROM DUAL;

-- 2020-03-01 00:00:00
SELECT TO_CHAR(TRUNC(TO_DATE('2020-03-16 21:00:00',
                             'YYYY-MM-DD HH24:MI:SS'), 'MONTH'),
               'YYYY-MM-DD HH24:MI:SS')  
  FROM DUAL;
 
-- 2020-03-16 00:00:00
SELECT TO_CHAR(TRUNC(TO_DATE('2020-03-16 21:00:00',
                             'YYYY-MM-DD HH24:MI:SS'), 'DD'),
               'YYYY-MM-DD HH24:MI:SS')  
  FROM DUAL;
 
-- 2020-03-16 00:00:00 
SELECT TO_CHAR(TRUNC(TO_DATE('2020-03-16 21:00:00',
                             'YYYY-MM-DD HH24:MI:SS')), 
               'YYYY-MM-DD HH24:MI:SS')   
  FROM DUAL;
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기