ORACLE Database / WAS (iAS) / SQL 자료실 - 포기하지 않으면 실패하지 않는다!
Vote Reply Modify Delete Forward Prev Next List

  Author   : 조성환 [ ladmin ] Vote: 1814, Modifies: 6, Hit: 5264, Lines: 327, Category: Etc.
DATE 형식으로 들어간 필드 날짜 수정하기 (초강추)

컬럼에 날짜가 date 형식으로 들어간 경우 update 하는 방법입니다.

아래 예는 홈페이지 게시판 게시물중 (게시일자가) 2006년도로 되어있는것을 2007년도로 변경(update) 하는 방법입니다.


1. 해당 테이블을 백업 합니다.

create table TBCAAA_BOARDITEM_BDFFFF14_01 as
select TITLE,
 NAME,
 REGDATE,
 EDIT_DATE
from SUKWOO.TBCAAA_BOARDITEM_BDFFFF14 ;


2. 조건에 해당하는 게시물들을 add_months 라는 날짜함수를 써서 update 합니다.
(12의 뜻은 현재 REGDATE 의 date 값을 기준으로 12개월 더하라는 뜻입니다.)

update TBCAAA_BOARDITEM_BDFFFF14
set REGDATE = add_months(REGDATE, 12),
 EDIT_DATE = add_months(EDIT_DATE, 12)
where BOARDITEM_PK >= '92' ;


3. commit 합니다.

commit ;




월과 날짜를 동시에 바꾸고자 한다면 다음과 같이 하시면 됩니다.


select BOARDITEM_PK,
 IDX1,
 IDX2,
 TITLE,
 NAME,
 REGDATE,
 EDIT_DATE
from TBCAAA_BOARDITEM_BDFFFF14
where BOARDITEM_PK = '5' ;

update TBCAAA_BOARDITEM_BDFFFF14
set REGDATE = REGDATE-3,
 EDIT_DATE = EDIT_DATE-3
where BOARDITEM_PK = '5' ;

update TBCAAA_BOARDITEM_BDFFFF14
set REGDATE = add_months(REGDATE, -7),
EDIT_DATE = add_months(EDIT_DATE, -7)
where BOARDITEM_PK = '5' ;


commit ;





<참고>

* 숫자함수/날짜함수

------------------------------------------------------------------------------

  구 분           함 수                                 내 용

------------------------------------------------------------------------------

                  ROUND             해당 소수점 자리에서 반올림할 때

                  TRUNC             해당 소수점 자리에서 절삭할 때

                  MOD(m/n)        m을 n으로 나누고 남은 나머지를 리턴할 때

                  ABS                 숫자 값을 절대값으로 바꾼다

                  SIGN                숫자가 양수:+1, 음수:-1, 0:0

숫자함수      FLOOR             실수값을 정수값으로

                  CEIL                그 수보다 가장 크거나 작은값을 리턴

                  POWER            해당 수에 대한 지수값을 표현

                  LOG                로그값으로 변환

                  SIN                  SIN값

                  COS                COS값

                  TAN                 TAN값

------------------------------------------------------------------------------

                  SYSDATE         현재 시스템 날짜를 보여줄 때

                  ADD_MONTHS   지정한 날짜에 몇 월을 추가한 결과의 월을 계산할 때

                  LAST_DAY        해당 월의 마지막 날짜를 알고자 할 때

날짜함수      NEW_TIME        해당 표준시로 시간을 변환할 때

                  NEXT_DAY        해당 날짜의 다음 지정한 날짜로 현환할 때

                  NONTH_BETWEEN   지정된 월 간의 월수를 알고자 할 때

------------------------------------------------------------------------------



* 숫자함수 예제....

-정의된 값을 절대값으로 변환 합니다

 SQL> SELECT ABS(-15) FROM DUAL ;

          ABS(-15)

        -----------

              15



-정의된 값의 올림된 값으로 변환합니다

SQL> SELECT CEIL(15.7) FROM DUAL ;

        

         CEIL(15.7)

      -------------

             16



-정의된 값의 내림된 값으로 변환합니다

SQL> SELECT FLOOR(15.7) FROM DUAL ;



         FLOOR(15.7)

       ---------------

              15



-정의된 산술식의 COSINE 값으로 변환합니다

SQL> SELECT COS(180*3.14/180) FROM DUAL ;



         COS(180*3.14/180)

       --------------------

                    -.99999873



-정의된 숫자의 지수승값을 계산합니다

SQL> SELECT EXP(4) FROM DUAL ;



         EXP(4)

       ---------

         54.59815



-뒤에 정의된 수로 앞에 정의된 수를 나눈 나머지 값을 반환합니다

SQL> SELECT MOD(11,4) FROM DUAL ;



         MOD(11,4)

       ------------

               3



-정의된 수를 지정한 자리 수에서 반올림합니다

SQL> SELECT ROUND(15.193 , 1) FROM DUAL ;



         ROUND(15.193 , 1)

       -------------------

                 15.2



-정의된 값이 음수이면 -1 , 0 이면 0, 양수이면 1을 리턴합니다

SQL> SELECT SIGN(-15) FROM DUAL ;



         SIGN(-15)

       ------------

              -1



-정의된 수를 지정한 자리 수 에서 절삭합니다

SQL> SELECT TRUNC(15.97 , 1) FROM DUAL ;



         TRUNC(15.79 , 1)

        -----------------

                 15.7



* 날짜 함수 예제



-현재 시스템 날짜를 제공합니다

SQL> SELECT SYSDATE FROM DUAL ;



         SYSDATE

       -----------

         06/11/13



-해당 날짜에 지정한 달 수만큼 더합니다

SQL> SELECT HIREDATE , ADD_MONTHS(HIREDATE , 1)

         FROM EMP WHERE EMPNO = 7782 ;



         HIREDATE     ADD_MONT

       --------------------------

         81/06/09         81/07/09



-정의된 날짜의 달에서 마지막 일이 몇 일인지 알 수 있습니다

SQL> SELECT HIREDATE , LAST_DAY(HIREDATE)

         FROM EMP WHERE EMPNO = 7782 ;



         HIREDATE     LAST_DAY

      --------------------------

           81/06/09       81/06/30



-정의된 두 날짜간의 차이 값을 알 수 있습니다

SQL> SELECT HIREDATE , MONTHS_BETWEEN(SYSDATE , HIREDATE)

         FROM EMP WHERE EMPNO = 7782 ;



         HIREDATE          MONTHS_BETWEEN(SYSDATE , HIREDATE)

       ------------------------------------------------------------

          81/06/09                                                     252.930883



-정의된 날짜를 년도 값 기준으로 반올림 합니다

SQL > SELECT

          ROUND(TO_DATE(' 27-OCT-98' , 'DD-MON-YY' ) ,

          'YEAT' ) FROM DUAL ;



          ROUND(TO

         ------------

             99/01/01





Prev: Oracle 10g 에서 제공하는 recyclebin 에 대한 기능 설명
Next: Oracle LOB의 종류 및 응용 SQL
2007/12/03(11:51) from 203.234.120.78
CrazyWWWBoard 2000

Vote Reply Modify Delete Forward Prev Next List
(c) Nobreak Technologies, Inc.