Oracle PL/SQL/Date Timezone/INTERVAL

Материал из SQL эксперт
Перейти к: навигация, поиск

INTERVAL DAY(3) TO SECOND (4)

   <source lang="sql">

SQL> CREATE TABLE promotions (

 2    promotion_id INTEGER,
 3    name VARCHAR2(30),
 4    duration INTERVAL DAY(3) TO SECOND (4)
 5  );

Table created. SQL> SQL> SQL> INSERT INTO promotions (promotion_id, name, duration)

 2  VALUES (1, "10% off Z Files", INTERVAL "3" DAY);

1 row created. SQL> INSERT INTO promotions (promotion_id, name, duration)

 2  VALUES (2, "20% off Pop 3", INTERVAL "2" HOUR);

1 row created. SQL> INSERT INTO promotions (promotion_id, name, duration)

 2  VALUES (3, "30% off Modern Science", INTERVAL "25" MINUTE);

1 row created. SQL> INSERT INTO promotions (promotion_id, name, duration)

 2  VALUES (4, "20% off Tank War", INTERVAL "45" SECOND);

1 row created. SQL> INSERT INTO promotions (promotion_id, name, duration)

 2  VALUES (5, "10% off Chemistry", INTERVAL "3 2:25" DAY TO MINUTE);

1 row created. SQL> INSERT INTO promotions (promotion_id, name, duration)

 2  VALUES (6, "20% off Creative Yell",
 3   INTERVAL "3 2:25:45" DAY TO SECOND);

1 row created. SQL> INSERT INTO promotions (promotion_id, name, duration)

 2  VALUES (7, "15% off My Front Line",
 3   INTERVAL "123 2:25:45.12" DAY(3) TO SECOND(2));

1 row created. SQL> SQL> SELECT *

 2  FROM promotions;

PROMOTION_ID NAME DURATION


------------------------------ ---------------------------------------------------------------------------
          1 10% off Z Files                +003 00:00:00.0000
          2 20% off Pop 3                  +000 02:00:00.0000
          3 30% off Modern Science         +000 00:25:00.0000
          4 20% off Tank War               +000 00:00:45.0000
          5 10% off Chemistry              +003 02:25:00.0000
          6 20% off Creative Yell          +003 02:25:45.0000
          7 15% off My Front Line          +123 02:25:45.1200

7 rows selected. SQL> SQL> drop table promotions; Table dropped. SQL> SQL>

      </source>
   
  


INTERVAL DAY TO SECOND

   <source lang="sql">

SQL> SQL> create table employee(

 2        employee_id number,
 3        break_reason varchar2(100),
 4        break_time interval day(1) to second(2));

Table created. SQL> SQL> insert into employee ( employee_id, break_reason, break_time )

 2      values ( 100, "C",
 3               TIMESTAMP "2001-09-03 12:47:00.000000" -
 4               TIMESTAMP "2001-09-03 13:13:00.000000" );

1 row created. SQL> SQL> insert into employee ( employee_id, break_reason, break_time )

 2      values ( 100, "B",
 3               TIMESTAMP "2001-09-03 13:35:00.000000" -
 4               TIMESTAMP "2001-09-03 13:39:00.000000" );

1 row created. SQL> SQL> insert into employee ( employee_id, break_reason, break_time )

 2      values ( 100, "P",
 3               TIMESTAMP "2001-09-03 16:30:00.000000" -
 4               TIMESTAMP "2001-09-03 17:00:00.000000" );

1 row created. SQL> SQL> insert into employee ( employee_id, break_reason, break_time )

 2      values ( 100, "F",
 3               TIMESTAMP "2001-09-03 17:00:00.000000" -
 4               TIMESTAMP "2001-09-03 17:30:00.000000" );

1 row created. SQL> SQL> column break_reason format a30 SQL> column break_time format a30 SQL> select employee_id, break_reason, break_time from employee; EMPLOYEE_ID BREAK_REASON BREAK_TIME


------------------------------ ------------------------------
       100 C                              -0 00:26:00.00
       100 B                              -0 00:04:00.00
       100 P                              -0 00:30:00.00
       100 F                              -0 00:30:00.00

SQL> SQL> drop table employee; Table dropped. SQL>

</source>
   
  


INTERVAL DAY TO SECOND type to store time intervals measured in days and seconds

   <source lang="sql">

SQL> -- INTERVAL DAY TO SECOND type to store time intervals measured in days and seconds. SQL> SQL> CREATE TABLE promotions (

 2    promotion_id INTEGER CONSTRAINT promotions_pk PRIMARY KEY,
 3    name VARCHAR2(30) NOT NULL,
 4    duration INTERVAL DAY(3) TO SECOND (4)
 5  );

Table created. SQL> SQL> SQL> desc promotions;

Name                                                                                                  Null?    Type
----------------------------------------------------------------------------------------------------- -------- -----------------------
PROMOTION_ID                                                                                          NOT NULL NUMBER(38)
NAME                                                                                                  NOT NULL VARCHAR2(30)
DURATION                                                                                               INTERVAL DAY(3) TO SECOND(4)

SQL> SQL> drop table promotions; Table dropped.

      </source>
   
  


INTERVAL YEAR(3) TO MONTH

   <source lang="sql">

SQL> CREATE TABLE coupons (

 2    coupon_id INTEGER,
 3    name VARCHAR2(30),
 4    duration INTERVAL YEAR(3) TO MONTH
 5  );

Table created. SQL> SQL> SQL> INSERT INTO coupons (coupon_id, name, duration) VALUES (1, "$1 off Z Files", INTERVAL "1" YEAR); 1 row created. SQL> INSERT INTO coupons (coupon_id, name, duration) VALUES (2, "$2 off Pop 3", INTERVAL "11" MONTH); 1 row created. SQL> INSERT INTO coupons (coupon_id, name, duration) VALUES (3, "$3 off Modern Science", INTERVAL "14" MONTH); 1 row created. SQL> INSERT INTO coupons (coupon_id, name, duration) VALUES (4, "$2 off Tank War", INTERVAL "1-3" YEAR TO MONTH); 1 row created. SQL> INSERT INTO coupons (coupon_id, name, duration) VALUES (5, "$1 off Chemistry", INTERVAL "0-5" YEAR TO MONTH); 1 row created. SQL> INSERT INTO coupons (coupon_id, name, duration) VALUES (6, "$2 off Creative Yell", INTERVAL "123" YEAR(3)); 1 row created. SQL> SQL> SELECT * FROM coupons;

COUPON_ID NAME                           DURATION

------------------------------ ---------------------------------------------------------------------------
        1 $1 off Z Files                 +001-00
        2 $2 off Pop 3                   +000-11
        3 $3 off Modern Science          +001-02
        4 $2 off Tank War                +001-03
        5 $1 off Chemistry               +000-05
        6 $2 off Creative Yell           +123-00

6 rows selected. SQL> SQL> SQL> SQL> drop table coupons;

      </source>
   
  


Use date time Interval type: interval day(1) to second(2)

   <source lang="sql">

SQL> SQL> SQL> create table employee(

 2        employee_id  number,
 3        break_reason varchar2(100),
 4        break_time   interval day(1) to second(2) );

Table created. SQL> SQL> SQL> insert into employee ( employee_id, break_reason, break_time )

 2       values ( 100, "COFFEE BREAK",
 3               TIMESTAMP "2001-09-03 12:47:00.000000" -
 4               TIMESTAMP "2001-09-03 13:13:00.000000" );

1 row created. SQL> SQL> SQL> insert into employee ( employee_id, break_reason, break_time )

 2        values ( 100, "BIO BREAK",
 3               TIMESTAMP "2001-09-03 13:35:00.000000" -
 4               TIMESTAMP "2001-09-03 13:39:00.000000" );

1 row created. SQL> SQL> insert into employee ( employee_id, break_reason, break_time )

 2        values ( 100, "PUB BREAK",
 3               TIMESTAMP "2001-09-03 16:30:00.000000" -
 4               TIMESTAMP "2001-09-03 17:00:00.000000" );

1 row created. SQL> SQL> insert into employee ( employee_id, break_reason, break_time )

 2        values ( 100, "FOOTBALL SCORE UPDATE",
 3               TIMESTAMP "2001-09-03 17:00:00.000000" -
 4               TIMESTAMP "2001-09-03 17:30:00.000000" );

1 row created. SQL> SQL> column break_reason format a30 SQL> column break_time format a30 SQL> SQL> SQL> select employee_id, break_reason, break_time from employee; EMPLOYEE_ID BREAK_REASON BREAK_TIME


------------------------------ ------------------------------
       100 COFFEE BREAK                   -0 00:26:00.00
       100 BIO BREAK                      -0 00:04:00.00
       100 PUB BREAK                      -0 00:30:00.00
       100 FOOTBALL SCORE UPDATE          -0 00:30:00.00

4 rows selected. SQL> SQL> drop table employee; Table dropped. SQL>

</source>
   
  


Using the INTERVAL YEAR TO MONTH Type

   <source lang="sql">

SQL> SQL> -- Using the INTERVAL YEAR TO MONTH Type SQL> SQL> -- INTERVAL YEAR TO MONTH type to store time intervals measured in years and months. SQL> SQL> CREATE TABLE coupons (

 2    coupon_id INTEGER,
 3    name VARCHAR2(30),
 4    duration INTERVAL YEAR(3) TO MONTH
 5  );

Table created. SQL> SQL> desc coupons;

Name                                                                                                  Null?    Type
----------------------------------------------------------------------------------------------------- -------- --------------------
COUPON_ID                                                                                              NUMBER(38)
NAME                                                                                                   VARCHAR2(30)
DURATION                                                                                               INTERVAL YEAR(3) TO MONTH

SQL> SQL> drop table coupons;

      </source>