oracle数据库时间常用点

日期无非 字串和日期类型,以及时间戳(数字):

1.日期和字符串转换函数(to_date,to_char)

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')  from dual;   //日期→字符串

+ 2018-02-03 11:43:22

select to_date('2017-05-02 11:11:44','yyyy-mm-dd hh24:mi:ss')    from dual //串→日期

+ 2017/5/2 11:11:44


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

select   sysdate        S1, 
       trunc(sysdate)   S2, //返回当前日期,无时分秒
      trunc(sysdate,'year') YEAR, //返回今年的1月1日,无时分秒
      trunc(sysdate,'month') MONTH , //返回当前月的1日,无时分秒
      trunc(sysdate,'day') DAY //返回当前星期的星期天,无时分秒
from dual

+ 2018/2/3 11:50:20 , 2018/2/3 , 2018/1/1,2018/2/1 ,2018/1/28


3.计算时间差
注:oracle时间差是以数为单位,所以换算成年月日

两个日期间的天数 差

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

 + 304

select  trunc(sysdate) - 1 from dual //时间差-天

+ 2018/2/2

select floor( to_number( sysdate  -  to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss') )/365)  from dual //时间差-
select ceil( moths_between ( sysdate-to_date ( '2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss' ) ) )  from dual //时间差-
select floor( to_number( sysdate - to_date('2017-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss') ))  from dual //时间差-

+ 92

select to_number( sysdate - to_date('2017-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss') )  from dual //时间差-天

+ 92.8721412037037

select  sysdate - to_date('2017-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss')  from dual //时间差-天

+ 92.872662037037

select  trunc(sysdate) - to_date('2017-11-02','yyyy-mm-dd')  from dual //时间差-天

+ 93

select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24)  from dual //时间差-
select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60)  from dual //时间差-
select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60*60)  from dual //时间差-

 

原文地址:https://www.cnblogs.com/fengdaren/p/8407102.html