​//oracle中extract()函数从oracle 9i中引入,用于从一个​​​​date​​​​或者interval类型中截取到特定的部分   ​


​//语法如下:   ​


​EXTRACT (   ​


​{ ​​​​YEAR​​​ ​​| ​​​​MONTH​​​ ​​| ​​​​DAY​​​ ​​| ​​​​HOUR​​​ ​​| ​​​​MINUTE​​​ ​​| ​​​​SECOND​​​ ​​}   ​


​| { TIMEZONE_HOUR | TIMEZONE_MINUTE }   ​


​| { TIMEZONE_REGION | TIMEZONE_ABBR }   ​


​FROM​​​ ​​{ date_value | interval_value } )   ​


​//我们只可以从一个​​​​date​​​​类型中截取 ​​​​year​​​​,​​​​month​​​​,​​​​day​​​​(​​​​date​​​​日期的格式为yyyy-mm-dd);   ​


​//我们只可以从一个 ​​​​timestamp​​​ ​​with​​​ ​​time​​​ ​​zone 的数据类型中截取TIMEZONE_HOUR和TIMEZONE_MINUTE;   ​


​select​​​ ​​extract(​​​​year​​​ ​​from​​​ ​​date​​​​'2011-05-17'​​​​) ​​​​year​​​ ​​from​​​ ​​dual;   ​


​YEAR​​  


​----------   ​


​2011   ​


​select​​​ ​​extract(​​​​month​​​ ​​from​​​ ​​date​​​​'2011-05-17'​​​​) ​​​​month​​​ ​​from​​​ ​​dual;   ​


​MONTH​​  


​----------   ​


​5   ​


​select​​​ ​​extract(​​​​day​​​ ​​from​​​ ​​date​​​​'2011-05-17'​​​​) ​​​​day​​​ ​​from​​​ ​​dual;   ​


​DAY​​  


​----------   ​


​17   ​


​//获取两个日期之间的具体时间间隔,extract函数是最好的选择   ​


​select​​​ ​​extract(​​​​day​​​ ​​from​​​ ​​dt2-dt1) ​​​​day​​  


​,extract(​​​​hour​​​ ​​from​​​ ​​dt2-dt1) ​​​​hour​​  


​,extract(​​​​minute​​​ ​​from​​​ ​​dt2-dt1) ​​​​minute​​  


​,extract(​​​​second​​​ ​​from​​​ ​​dt2-dt1) ​​​​second​​  


​from​​​ ​​(   ​


​select​​​ ​​to_timestamp(​​​​'2011-02-04 15:07:00'​​​​,​​​​'yyyy-mm-dd hh24:mi:ss'​​​​) dt1   ​


​,to_timestamp(​​​​'2011-05-17 19:08:46'​​​​,​​​​'yyyy-mm-dd hh24:mi:ss'​​​​) dt2   ​


​from​​​ ​​dual)   ​


​/   ​


​DAY​​​       ​​HOUR​​​     ​​MINUTE​​​     ​​SECOND​​  


​---------- ---------- ---------- ----------   ​


​102          4          1         46   ​


​--   ​


​select​​​ ​​extract(​​​​year​​​ ​​from​​​ ​​systimestamp) ​​​​year​​  


​,extract(​​​​month​​​ ​​from​​​ ​​systimestamp) ​​​​month​​  


​,extract(​​​​day​​​ ​​from​​​ ​​systimestamp) ​​​​day​​  


​,extract(​​​​minute​​​ ​​from​​​ ​​systimestamp) ​​​​minute​​  


​,extract(​​​​second​​​ ​​from​​​ ​​systimestamp) ​​​​second​​  


​,extract(timezone_hour ​​​​from​​​ ​​systimestamp) th   ​


​,extract(timezone_minute ​​​​from​​​ ​​systimestamp) tm   ​


​,extract(timezone_region ​​​​from​​​ ​​systimestamp) tr   ​


​,extract(timezone_abbr ​​​​from​​​ ​​systimestamp) ta   ​


​from​​​ ​​dual   ​


​/   ​


​YEAR​​​      ​​MONTH​​​        ​​DAY​​​     ​​MINUTE​​​     ​​SECOND​​​         ​​TH         TM TR         TA   ​


​---------- ---------- ---------- ---------- ---------- ---------- ---------- --------- ----------   ​


​2011          5         17          7     14.843          8          0 UNKNOWN   UNK   ​


​//   ​



 

 





​//oracle中extract()函数从oracle 9i中引入,用于从一个​​​​date​​​​或者interval类型中截取到特定的部分   ​


​//语法如下:   ​


​EXTRACT (   ​


​{ ​​​​YEAR​​​ ​​| ​​​​MONTH​​​ ​​| ​​​​DAY​​​ ​​| ​​​​HOUR​​​ ​​| ​​​​MINUTE​​​ ​​| ​​​​SECOND​​​ ​​}   ​


​| { TIMEZONE_HOUR | TIMEZONE_MINUTE }   ​


​| { TIMEZONE_REGION | TIMEZONE_ABBR }   ​


​FROM​​​ ​​{ date_value | interval_value } )   ​


​//我们只可以从一个​​​​date​​​​类型中截取 ​​​​year​​​​,​​​​month​​​​,​​​​day​​​​(​​​​date​​​​日期的格式为yyyy-mm-dd);   ​


​//我们只可以从一个 ​​​​timestamp​​​ ​​with​​​ ​​time​​​ ​​zone 的数据类型中截取TIMEZONE_HOUR和TIMEZONE_MINUTE;   ​


​select​​​ ​​extract(​​​​year​​​ ​​from​​​ ​​date​​​​'2011-05-17'​​​​) ​​​​year​​​ ​​from​​​ ​​dual;   ​


​YEAR​​  


​----------   ​


​2011   ​


​select​​​ ​​extract(​​​​month​​​ ​​from​​​ ​​date​​​​'2011-05-17'​​​​) ​​​​month​​​ ​​from​​​ ​​dual;   ​


​MONTH​​  


​----------   ​


​5   ​


​select​​​ ​​extract(​​​​day​​​ ​​from​​​ ​​date​​​​'2011-05-17'​​​​) ​​​​day​​​ ​​from​​​ ​​dual;   ​


​DAY​​  


​----------   ​


​17   ​


​//获取两个日期之间的具体时间间隔,extract函数是最好的选择   ​


​select​​​ ​​extract(​​​​day​​​ ​​from​​​ ​​dt2-dt1) ​​​​day​​  


​,extract(​​​​hour​​​ ​​from​​​ ​​dt2-dt1) ​​​​hour​​  


​,extract(​​​​minute​​​ ​​from​​​ ​​dt2-dt1) ​​​​minute​​  


​,extract(​​​​second​​​ ​​from​​​ ​​dt2-dt1) ​​​​second​​  


​from​​​ ​​(   ​


​select​​​ ​​to_timestamp(​​​​'2011-02-04 15:07:00'​​​​,​​​​'yyyy-mm-dd hh24:mi:ss'​​​​) dt1   ​


​,to_timestamp(​​​​'2011-05-17 19:08:46'​​​​,​​​​'yyyy-mm-dd hh24:mi:ss'​​​​) dt2   ​


​from​​​ ​​dual)   ​


​/   ​


​DAY​​​       ​​HOUR​​​     ​​MINUTE​​​     ​​SECOND​​  


​---------- ---------- ---------- ----------   ​


​102          4          1         46   ​


​--   ​


​select​​​ ​​extract(​​​​year​​​ ​​from​​​ ​​systimestamp) ​​​​year​​  


​,extract(​​​​month​​​ ​​from​​​ ​​systimestamp) ​​​​month​​  


​,extract(​​​​day​​​ ​​from​​​ ​​systimestamp) ​​​​day​​  


​,extract(​​​​minute​​​ ​​from​​​ ​​systimestamp) ​​​​minute​​  


​,extract(​​​​second​​​ ​​from​​​ ​​systimestamp) ​​​​second​​  


​,extract(timezone_hour ​​​​from​​​ ​​systimestamp) th   ​


​,extract(timezone_minute ​​​​from​​​ ​​systimestamp) tm   ​


​,extract(timezone_region ​​​​from​​​ ​​systimestamp) tr   ​


​,extract(timezone_abbr ​​​​from​​​ ​​systimestamp) ta   ​


​from​​​ ​​dual   ​


​/   ​


​YEAR​​​      ​​MONTH​​​        ​​DAY​​​     ​​MINUTE​​​     ​​SECOND​​​         ​​TH         TM TR         TA   ​


​---------- ---------- ---------- ---------- ---------- ---------- ---------- --------- ----------   ​


​2011          5         17          7     14.843          8          0 UNKNOWN   UNK   ​


​//   ​