hyeonga_code

Database_72_DATETIME 응용_TIMESTAMP 본문

Oracle Database

Database_72_DATETIME 응용_TIMESTAMP

hyeonga 2023. 8. 24. 06:59
반응형


    -- TIMESTAMP 데이터 유형
        -- TIMESTAMP
            -- 데이터 타입의 확장입니다.
            -- 년, 월, 일, 시, 분, 초(소수 표기)값을 포함합니다.
        -- TIMESTAMP WITH TIME ZONE
            -- TIMESTAMP의 모든 값에 더해 시간대 변위 값을 포함합니다.
        -- TIMESTAMP WITH LOCAL TIME ZONE
            -- TIMESTAMP 데이터 유형과 동일합니다.
            -- 데이터베이스에 데이터가 저장될 때 데이터베이스 시간대로 정규화됩니다.
            -- 데이터가 검색될 때 유저는 세션 시간대의 데이터을 볼 수 있습니다.


-- EMPLOYEES 테이블을 복사하여 새로운 테이블을 생성합니다.
CREATE TABLE emp60
AS
SELECT employee_id, last_name, job_id, hire_date
FROM employees
WHERE department_id = 60;
    /*
    Table EMP60이(가) 생성되었습니다.
    */

-- 입사일의 유형을 변경합니다.
ALTER TABLE emp60
MODIFY hire_date TIMESTAMP;
    /*
    Table EMP60이(가) 변경되었습니다.
    */


SELECT * FROM emp60;



-- ORDERS 테이블을 생성합니다.
CREATE TABLE orders (
    ord_no NUMBER(6),
    prod_id CHAR(8),
    ord_date DATE, --주문날짜
    payment_date TIMESTAMP(0), --결제날짜
    delivery_date TIMESTAMP(0) WITH TIME ZONE, --배송날짜
    arrival_date TIMESTAMP(0) WITH LOCAL TIME ZONE); -- 도착날짜
        -- TIMESTAMP( n ) : 저장할 자리수를 지정합니다.
            -- default 값은 6자리입니다.
    /*
    Table ORDERS이(가) 생성되었습니다.
    */
            
-- ORDERS 테이블에 데이터를 삽입합니다.
INSERT INTO orders
VALUES(100001, 'ABC-D001', sysdate, sysdate+1/24, sysdate+1, sysdate+3); 
    /*
    1 행 이(가) 삽입되었습니다.
    */
    
INSERT INTO orders
VALUES(100002, 'EFG-H325', sysdate, sysdate+1/24, sysdate+1, sysdate+3);
    /*
    1 행 이(가) 삽입되었습니다.
    */
    
INSERT INTO orders
VALUES(100003, 'JKL-M108', sysdate, sysdate+1/24, sysdate+1, sysdate+2);
    /*
    1 행 이(가) 삽입되었습니다.
    */

-- 테이블을 조회합니다.
SELECT * FROM orders;


    
-- 세션 시간대를 변경합니다.
ALTER SESSION SET time_zone='-10:00';
    /*
    Session이(가) 변경되었습니다.
    */
    
-- 현재 세션의 시간을 조회합니다.
SELECT current_timestamp FROM dual;


-- 테이블을 조회합니다. 
SELECT * FROM orders;



-- 세션 시간대를 변경합니다.
ALTER SESSION SET time_zone='+9:00';
    /*
    Session이(가) 변경되었습니다.
    */
    
-- 현재 세션의 시간을 조회합니다.
SELECT current_timestamp FROM dual;


    
-- 테이블을 조회합니다. 
SELECT * FROM orders;
    /*
    ORD_NO    PROD_ID      ORD_DATE    PAYMENT_DATE       DELIVERY_DATE                  ARRIVAL_DATE
    -----------------------------------------------------------------------------------------------------------------------
    100001     ABC-D001     23/07/14      23/07/14 16:14:07    23/07/15 15:14:07 -10:00    23/07/18 10:14:07
    100002     EFG-H325     23/07/14      23/07/14 16:14:10    23/07/15 15:14:10 -10:00     23/07/18 10:14:10
    100003     JKL-M108     23/07/14      23/07/14 16:14:13    23/07/15 15:14:13 -10:00     23/07/17 10:14:13
    */

-- 다시 한국으로 돌려놓습니다.
ALTER SESSION SET time_zone='+9:00';
    /*
    Session이(가) 변경되었습니다.
    */








반응형