hyeonga_code

Database_72_DATETIME 응용_INTERVAL 데이터 유형 본문

Oracle Database

Database_72_DATETIME 응용_INTERVAL 데이터 유형

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


        -- INTERVAL 데이터 유형
            -- INTERVAL YEAR TO MONTH
                -- YEAR/MONTH 필드의 연속된 부분 집합으로 구성됩니다.
            -- INTERVAL DAY TO SECOND
                -- DAY, HOUR, MINUTE, SECOND로 구성되는 필드의 연속된 부분 집합으로 구성됩니다.

-- WARRANTY 테이블을 생성합니다.
CREATE TABLE warranty (
    prod_id CHAR(8),
    warranty_time INTERVAL YEAR(3) TO MONTH);
    /*
    Table WARRANTY이(가) 생성되었습니다.
    */
    
DESC warranty;
    /*
    이름                널?      유형                        
    -------------      --      ------------------------- 
    PROD_ID                   CHAR(8)                   
    WARRANTY_TIME        INTERVAL YEAR(3) TO MONTH 
    */
    
-- 데이터를 삽입합니다.
INSERT INTO warranty 
VALUES ('ABC-D001', INTERVAL '6' MONTH); -- 6개월을 의미합니다.
    /*
    1 행 이(가) 삽입되었습니다.
    */

INSERT INTO warranty 
VALUES ('EFG-H325', INTERVAL '15' YEAR); -- 15년을 의미합니다.
    /*
    1 행 이(가) 삽입되었습니다.
    */

INSERT INTO warranty 
VALUES ('JKL-M108', '5-6'); -- 5년 6개월을 의미합니다.
    /*
    1 행 이(가) 삽입되었습니다.
    */

-- 테이블을 조회합니다.
SELECT * FROM warranty;
        -- 제품을 구매한 날로부터 WARRANTY_TIME 간격을 추가해야 서비스 기간을 알 수 있습니다.



-- 주문 제품별로 보증만료일을 출력합니다.
SELECT o.ord_no, o.prod_id, o.arrival_date, o.arrival_date + w.warranty_time AS 보증만료일
FROM orders o JOIN warranty w
ON ( o.prod_id=w.prod_id );



-- SALE_PERIOD 테이블을 생성합니다.
CREATE TABLE sale_period (
    prod_id CHAR(8),
    sale_time INTERVAL DAY(3) TO SECOND);
    /*
    Table SALE_PERIOD이(가) 생성되었습니다.
    */
    
-- 데이터를 삽입합니다.
INSERT INTO sale_period 
VALUES ('ABC-D001', INTERVAL '15' DAY);
    /*
    1 행 이(가) 삽입되었습니다.
    */

INSERT INTO sale_period 
VALUES ('EFG-H325', INTERVAL '7 12:00:00' DAY TO SECOND);
    /*
    1 행 이(가) 삽입되었습니다.
    */

INSERT INTO sale_period
VALUES ('JKL-M108', INTERVAL '12' HOUR); 
    /*
    1 행 이(가) 삽입되었습니다.
    */

-- 상품별 세일 만료 일시를 조회합니다.
SELECT prod_id, systimestamp, systimestamp+sale_time
FROM sale_period;

반응형