oracle 中的时间转换和计算

如何获取oracle 当前时间

select sysdate from dual;

select Current_date from dual;

select SYSTIMESTAMP from dual;

To_date () 2007-11-02 13:45:25

Yeas:yy显示两位年  显示07

              yyy 显示三位年 显示007

              yyyy显示四位年 显示2007

Month

              mm     11

              mon 英文版 nov

              month 显示全文  November

day:

              dd  当月第几天 显示02

              ddd   当年第几天

              dy  显示当周第几天简写       fri

              day  显示当周第几天全写     Friday

hour

              hh    12进制 显示01

              hh24   24进制 显13

minute

              mi  60进制 显示45

second

              ss   60进制   显示25

其他

Q 季度  显示4

Ww  当年第几周 44

W 当月第几周  显示1

  1. 日期和字符串的转换

elect to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;   //日期转化为字符串  

select to_char(sysdate,'yyyy') as nowYear   from dual;   //获取时间的年  

select to_char(sysdate,'mm')    as nowMonth from dual;   //获取时间的月  

select to_char(sysdate,'dd')    as nowDay    from dual;   //获取时间的日  

select to_char(sysdate,'hh24') as nowHour   from dual;   //获取时间的时  

select to_char(sysdate,'mi')    as nowMinute from dual;   //获取时间的分  

select to_char(sysdate,'ss')    as nowSecond from dual;   //获取时间的秒

select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss')    from dual//

2求某天时周几

Select to_char(to_date(‘日期字符串’,日期格式),‘day’) from dual;

3d两个日期间的天数     

select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;   

4.查找月份     

    select months_between(to_date('01-31-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;     

    1     

   select months_between(to_date('02-01-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;      

1.03225806451613

5.

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;

6    5秒钟间隔

 Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS') ,TO_CHAR(sysdate,'SSSSS')     

   from dual

7  获得小时分,秒,毫秒

select     

     Days,     

     A,     

     TRUNC(A*24) Hours,     

     TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes,     

     TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds,     

     TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds     

    from     

    (     

     select     

     trunc(sysdate) Days,     

     sysdate - trunc(sysdate) A     

     from dual     

   )   

8 trunc[截断到最接近的日期,单位为天] ,返回的是日期类型

   select sysdate S1,                    

     trunc(sysdate) S2,                 //返回当前日期,无时分秒

     trunc(sysdate,'year') YEAR,        //返回当前年的1月1日,无时分秒

     trunc(sysdate,'month') MONTH ,     //返回当前月的1日,无时分秒

     trunc(sysdate,'day') DAY           //返回当前星期的星期天,无时分秒

   from dual

9 返回日期列表中最晚的日期

select greatest('01-1月-04','04-1月-04','10-2月-04') from dual

10 跟新时间

注:oracle时间加减是以天数为单位,设改变量为n,所以换算成年月,日

     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n*365,'yyyy-mm-dd hh24:mi:ss') as newTime from dual        //改变时间-年

     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),add_months(sysdate,n) as newTime from dual                                 //改变时间-月

     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n,'yyyy-mm-dd hh24:mi:ss') as newTime from dual            //改变时间-日

     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24,'yyyy-mm-dd hh24:mi:ss') as newTime from dual         //改变时间-时

     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24/60,'yyyy-mm-dd hh24:mi:ss') as newTime from dual      //改变时间-分

     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24/60/60,'yyyy-mm-dd hh24:mi:ss') as newTime from dual   //改变时间-秒

部分转载:https://www.cnblogs.com/ajian/archive/2009/03/25/1421063.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值