Extract year, month, day from a date : EXTRACT « Date Timestamp Functions « Oracle PL/SQL Tutorial






SQL> create table emp
  2  ( empno      NUMBER(4)    constraint E_PK primary key
  3  , ename      VARCHAR2(8)
  4  , init       VARCHAR2(5)
  5  , job        VARCHAR2(8)
  6  , mgr        NUMBER(4)
  7  , bdate      DATE
  8  , sal       NUMBER(6,2)
  9  , comm       NUMBER(6,2)
 10  , deptno     NUMBER(2)    default 10
 11  ) ;

Table created.

SQL> insert into emp values(1,'Tom','N',   'Coder', 13,date '1965-12-17',  800 , NULL,  20);

1 row created.

SQL> insert into emp values(2,'Jack','JAM', 'Tester',6,date '1961-02-20',  1600, 300,   30);

1 row created.

SQL> insert into emp values(3,'Wil','TF' ,  'Tester',6,date '1962-02-22',  1250, 500,   30);

1 row created.

SQL> insert into emp values(4,'Jane','JM',  'Designer', 9,date '1967-04-02',  2975, NULL,  20);

1 row created.

SQL> insert into emp values(5,'Mary','P',  'Tester',6,date '1956-09-28',  1250, 1400,  30);

1 row created.

SQL> insert into emp values(6,'Black','R',   'Designer', 9,date '1963-11-01',  2850, NULL,  30);

1 row created.

SQL> insert into emp values(7,'Chris','AB',  'Designer', 9,date '1965-06-09',  2450, NULL,  10);

1 row created.

SQL> insert into emp values(8,'Smart','SCJ', 'Coder', 4,date '1959-11-26',  3000, NULL,  20);

1 row created.

SQL> insert into emp values(9,'Peter','CC',   'Designer',NULL,date '1952-11-17',  5000, NULL,  10);

1 row created.

SQL> insert into emp values(10,'Take','JJ', 'Tester',6,date '1968-09-28',  1500, 0,     30);

1 row created.

SQL> insert into emp values(11,'Ana','AA',  'Coder', 8,date '1966-12-30',  1100, NULL,  20);

1 row created.

SQL> insert into emp values(12,'Jane','R',   'Manager',   6,date '1969-12-03',  800 , NULL,  30);

1 row created.

SQL> insert into emp values(13,'Fake','MG',   'Coder', 4,date '1959-02-13',  3000, NULL,  20);

1 row created.

SQL> insert into emp values(14,'Mike','TJA','Manager',   7,date '1962-01-23',  1300, NULL,  10);

1 row created.

SQL>
SQL>
SQL> select bdate
  2  ,      extract(year  from bdate) as year_of_birth
  3  ,      extract(month from bdate) as month_of_birth
  4  ,      extract(day   from bdate) as day_of_birth
  5  from   emp
  6  where  ename = 'Peter';

BDATE      YEAR_OF_BIRTH MONTH_OF_BIRTH DAY_OF_BIRTH
---------- ------------- -------------- ------------
17-11-1952          1952             11           17

SQL>
SQL>
SQL> drop table emp;

Table dropped.








13.6.EXTRACT
13.6.1.EXTRACT() to extract and return a year, month, day, hour, minute, second, or time zone from the timestamp types or a DATE.
13.6.2.SELECT EXTRACT(MONTH FROM TO_DATE('01-JAN-2005 19:15:26','DD-MON-YYYY HH24:MI:SS')) As MONTH
13.6.3.SELECT EXTRACT(YEAR FROM TO_DATE('01-JAN-2005 19:15:26','DD-MON-YYYY HH24:MI:SS')) AS YEAR
13.6.4.EXTRACT() gets the hour, minute, and second from a TIMESTAMP returned by TO_TIMESTAMP()
13.6.5.EXTRACT(MINUTE FROM TO_TIMESTAMP('01-JAN-2005 19:15:26', 'DD-MON-YYYY HH24:MI:SS')) AS MINUTE
13.6.6.EXTRACT(SECOND FROM TO_TIMESTAMP('01-JAN-2005 19:15:26', 'DD-MON-YYYY HH24:MI:SS')) AS SECOND
13.6.7.EXTRACT()gets the time zone hour, minute, second, region, and region abbreviation from a TIMESTAMP WITH TIMEZONE returned by TO_TIMESTAMP_TZ()
13.6.8.EXTRACT(TIMEZONE_MINUTE FROM TO_TIMESTAMP_TZ('01-JAN-2005 19:15:26 -7:15', 'DD-MON-YYYY HH24:MI:SS TZH:TZM'))
13.6.9.EXTRACT(TIMEZONE_REGION FROM TO_TIMESTAMP_TZ('01-JAN-2005 19:15:26 PST', 'DD-MON-YYYY HH24:MI:SS TZR'))
13.6.10.EXTRACT(TIMEZONE_ABBR FROM TO_TIMESTAMP_TZ('01-JAN-2005 19:15:26 PST', 'DD-MON-YYYY HH24:MI:SS TZR'))
13.6.11.extract year from birthday
13.6.12.extract month from birthday
13.6.13.extract day from birthday
13.6.14.Extract year, month, day from a date
13.6.15.Order date value by only year field with extract() function