oracle日期时间函数大全

发布时间:2020-06-17编辑:脚本学堂
oracle日期时间函数大全,很丰富很全面。

 
10. Next_day的用法
    Next_day(date, day)
   
    Monday-Sunday, for format code DAY
    Mon-Sun, for format code DY
    1-7, for format code D
11 select to_char(sysdate,'hh:mi:ss') TIME from all_objects
   注意:第一条记录的TIME 与最后一行是一样的
   可以建立一个函数来处理这个问题
   create or replace function sys_date return date is
   begin
   return sysdate;
   end;
  
   select to_char(sys_date,'hh:mi:ss') from all_objects;  

12.获得小时数
extract()找出日期或间隔值的字段值
    SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from offer
    SQL> select sysdate ,to_char(sysdate,'hh') from dual;
   
    SYSDATE TO_CHAR(SYSDATE,'HH')
    -------------------- ---------------------
    2003-10-13 19:35:21 07
   
    SQL> select sysdate ,to_char(sysdate,'hh24') from dual;
   
    SYSDATE TO_CHAR(SYSDATE,'HH24')
    -------------------- -----------------------
    2003-10-13 19:35:21 19

13.年月日的处理
   select older_date,
 newer_date,
 years,
 months,
 abs(
trunc(
 newer_date-
 add_months( older_date,years*12+months )
)
 ) days
 
   from ( select
trunc(months_between( newer_date, older_date )/12) YEARS,
mod(trunc(months_between( newer_date, older_date )),12 ) MONTHS,
newer_date,
older_date
from (
select hiredate older_date, add_months(hiredate,rownum)+rownum newer_date
from emp
)
)

14.处理月份天数不定的办法
   select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual

16.找出今年的天数
   select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual

   闰年的处理方法
   to_char( last_day( to_date('02'    | | :year,'mmyyyy') ), 'dd' )
   如果是28就不是闰年

17.yyyy与rrrr的区别
   'YYYY99 TO_C
   ------- ----
   yyyy 99 0099
   rrrr 99 1999
   yyyy 01 0001
   rrrr 01 2001

18.不同时区的处理
   select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy hh:mi:ss') ,sysdate
   from dual;

19.5秒钟一个间隔
   Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS') ,TO_CHAR(sysdate,'SSSSS')
   from dual

   2002-11-1 9:55:00 35786
   SSSSS表示5位秒数