Oracle Extract 函数
//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 //