Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ultimate-member domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /ledcorps/www/wp/wp-includes/functions.php on line 6114 5.3 Datetime Functions (날짜 함수) – 대나무숲

5.3 Datetime Functions (날짜 함수)

출처 URL : http://www.gurubee.net/lecture/1026

날짜 함수는 오라클 날짜에 대해 연산을 한다.

날짜 함수는 NUMBER형 값 또는 DATE형의 값을 RETURN 한다.

SYSDATE

SYSDATE 함수를 사용하면 현재 일자와 시간(시스템기준)을 얻을 수 있다.

최소단위 = 1초

-- SYSDTE 예제
SELECT TO_CHAR(SYSDATE,'RRRR-MM-DD HH24:MI:SS') "지금시간"
  FROM DUAL ;
 
SELECT TO_CHAR(SYSDATE-1,'RRRR-MM-DD HH24:MI:SS') "하루전지금시간"
  FROM DUAL ;
 
SELECT TO_CHAR(SYSDATE-1/24,'RRRR-MM-DD HH24:MI:SS') "1시간전시간"
  FROM DUAL ;
 
SELECT TO_CHAR(SYSDATE-1/24/60,'RRRR-MM-DD HH24:MI:SS') "1분전시간"
  FROM DUAL ;
 
SELECT TO_CHAR(SYSDATE-1/24/60/10,'RRRR-MM-DD HH24:MI:SS') "6초전시간"
  FROM DUAL ;
 
SELECT TO_CHAR(SYSDATE-(5/24 + 30/24/60 + 10/24/60/60),'RRRR-MM-DD HH24:MI:SS') "5시간 30분 10초전"
  FROM DUAL ;

SYSTIMESTAMP

SYSTIMESTAMP 함수를 사용하면 현재 일자와 시간(시스템기준)을 얻을 수 있다.

최소단위 = 10억분의 1초 (10의 9승)

-- SYSTIMESTAMP 예제
SELECT TO_CHAR(SYSTIMESTAMP,'RRRR-MM-DD HH24:MI:SS.FF3')  
  FROM DUAL ;
 
SELECT TO_CHAR(SYSTIMESTAMP,'RRRR-MM-DD HH24:MI:SS.FF9')  
  FROM DUAL ;
 
SELECT TO_CHAR(SYSTIMESTAMP -1/24,'RRRR-MM-DD HH24:MI:SS') "1시간전시간"
  FROM DUAL ;
 
SELECT TO_CHAR(SYSTIMESTAMP -1/24/60,'RRRR-MM-DD HH24:MI:SS') "1분전시간"
  FROM DUAL ;

ADD_MONTHS(a, b)

ADD_MONTHS 함수는 a의 날짜에 b의 달을 더한 값을 반환 한다.

-- SYSDATE를 이용한 예제
SELECT TO_CHAR(ADD_MONTHS(SYSDATE,3),'RRRR-MM-DD')  "date"
  FROM DUAL; 
 
 
-- TIMESTAMP를 이용한 예제
SELECT TO_CHAR(ADD_MONTHS(SYSTIMESTAMP,3),'RRRR-MM-DD')  "date"
  FROM DUAL;

MONTHS_BETWEEN(a1, a2)

MONTHS_BETWEEN은 a1과 a2 사이의 달의 수를 NUMBER형 타입으로 반환 한다.

-- 두 일자 사이에 달의 수를 조회하는 예제
SELECT MONTHS_BETWEEN(TO_DATE('2010-06-05','RRRR-MM-DD'), 
                      TO_DATE('2010-05-01','RRRR-MM-DD'))  "month"  
  FROM DUAL;
 
-- 두 일자 사이에 일짜 수를 조회하는 예제
SELECT TO_DATE('2010-06-05','RRRR-MM-DD') - 
       TO_DATE('2010-05-01','RRRR-MM-DD')  "Day"  
  FROM DUAL;

LAST_DAY(d)

LAST_DAY 함수는 달의 마지막 날의 날짜를 반환 한다

-- LAST_DAY예제
SELECT SYSDATE today, LAST_DAY(SYSDATE) lastday 
  FROM DUAL;
 
TODAY    LASTDAY
-------- --------
11/05/28 11/05/31

NEXT_DAY(d, c1)

NEXT_DAY는 돌아오는 명시된 요일의 일자를 반환한다.

요일은 1(일) ~ 7(토)로 입력하면 된다.

-- NEXT_DAY예제
SELECT NEXT_DAY(SYSDATE, 4) "Next Wednesday"
  FROM DUAL;
 
Next Wed
--------
11/06/01
 
-- NEXT_DAY예제
SELECT NEXT_DAY(TO_DATE('20110501','RRRRMMDD'), 2) "5월 첫째주 월요일"
  FROM DUAL;
 
5월 첫째
--------
11/05/02

ROUND(d[,F])

ROUND 함수는 F에 지정된 단위로 반올림 한다. F가 연도라면 연도 단위로 반올림 한다. F가 생략되면 날짜를 가장 가까운 날짜로 반올림한다.

-- ROUND예제
SELECT TO_CHAR(ROUND(TO_DATE('2011-09-11 21:00:01',
                             'RRRR-MM-DD HH24:MI:SS'), 'YEAR'),
               'RRRR-MM-DD HH24:MI:SS')  
  FROM DUAL;
 
SELECT TO_CHAR(ROUND(TO_DATE('2011-09-11 21:00:01',
                             'RRRR-MM-DD HH24:MI:SS'), 'MONTH'),
               'RRRR-MM-DD HH24:MI:SS')  
  FROM DUAL;
 
SELECT TO_CHAR(ROUND(TO_DATE('2011-09-11 21:00:01',
                             'RRRR-MM-DD HH24:MI:SS'), 'DD'),
               'RRRR-MM-DD HH24:MI:SS')  
  FROM DUAL;
 
SELECT TO_CHAR(ROUND(TO_DATE('2011-09-11 21:00:01',
                             'RRRR-MM-DD HH24:MI:SS')), 
               'RRRR-MM-DD HH24:MI:SS')   
  FROM DUAL;
 
 
-- 실행 결과
2012-01-01 00:00:00
2011-09-01 00:00:00
2011-09-12 00:00:00
2011-09-12 00:00:00

TRUNC(d[,F])

TRUNC 함수는 F에 지정된 단위로 절삭 한다

-- TRUNC예제
SELECT TO_CHAR(TRUNC(TO_DATE('2011-09-11 21:00:01',
                             'RRRR-MM-DD HH24:MI:SS'), 'YEAR'),
              'RRRR-MM-DD HH24:MI:SS')  
  FROM DUAL;
 
SELECT TO_CHAR(TRUNC(TO_DATE('2011-09-11 21:00:01',
                             'RRRR-MM-DD HH24:MI:SS'), MONTH'),
               'RRRR-MM-DD HH24:MI:SS')  
  FROM DUAL;
 
SELECT TO_CHAR(TRUNC(TO_DATE('2011-09-11 21:00:01',
                             'RRRR-MM-DD HH24:MI:SS'), 'DD'),
               'RRRR-MM-DD HH24:MI:SS')  
  FROM DUAL;
 
SELECT TO_CHAR(TRUNC(TO_DATE('2011-09-11 21:00:01',
                             'RRRR-MM-DD HH24:MI:SS')), 
               'RRRR-MM-DD HH24:MI:SS')   
  FROM DUAL;
 
 
-- 실행 결과
2011-01-01 00:00:00 
2011-09-01 00:00:00
2011-09-11 00:00:00
2011-09-11 00:00:00

날짜에 대한 산술 연산

연 산결과치사용목적
날짜 + 숫자날짜특정한 날로부터 며칠 후의 날짜 계산
날짜 – 숫자날짜특정한 날로부터 며칠 전의 날짜 계산
날짜 – 날짜숫자두 날짜 사이의 차이를 숫자로 계산

Oracle Datetime Functions

ADD_MONTHS
CURRENT_DATE
CURRENT_TIMESTAMP
DBTIMEZONE
EXTRACT (datetime)
FROM_TZ
LAST_DAY
LOCALTIMESTAMP
MONTHS_BETWEEN
NEW_TIME
NEXT_DAY
NUMTODSINTERVAL
NUMTOYMINTERVAL
ROUND (date)
SESSIONTIMEZONE
SYS_EXTRACT_UTC
SYSDATE
SYSTIMESTAMP
TO_CHAR (datetime)
TO_TIMESTAMP
TO_TIMESTAMP_TZ
TO_DSINTERVAL
TO_YMINTERVAL
TRUNC (date)
TZ_OFFSET


답글 남기기 0

Your email address will not be published. Required fields are marked *