关于Oracle时间函数用法



1与时间相关的定义以及时区

  Date 精确到秒,是一个浮点数表示从1970至今的天数,如果取整表示是天,小数部分是时分秒;

  Timestamp精确到毫秒,使用默认时区;

  timestamp with time zone 时间戳会根据数据库所处时区(dbtimezone)显示时间,许多时候,数据库管理员并没有

  更改dbtimezone默认是0时区;

  timestamp with local time zone 时间戳会根据数据库所处时区(sessiontimezone)显示时间, sessiontimezone是访问数据库所在的时区, Oracle默认OS的时区作为sessiontimezone的值.

     alter session set time_zone='+8:00'; 修改sessiontimezone
      alter DATABASE set time_zone='+8:00'; 修改dbtimezone
   例如: select dbtimezone, sessiontimezone from dual; 
      会得到以下结果
      Dbtimezone    sessiontimezone
        +00:00         +08:00
2 时间计算
   从定义我们知道Date是一个表示到天的浮点数,那么就可以进行各种加减运算.
   1 
        Sysdate + 1  表示明天的此时此刻;
        Sysdate – 1  表示昨天的此时此刻;
        Sysdate -  1/24表示一个小时前的此时此刻; 由于一天24小时 1小时就等于1/24
       1分钟=1/(24*60)  1 =1/(24*60*60)  
  这样我们可以通过以上方法得到任意时间前或后的时间。                             
2
     计算两个时间点之差
     Sysdate - to_date('20160801 14:06:02','yyyyMMdd HH24:mi:ss')
这个差值也是一天为单位的一个浮点数;
要得到天那么取整可以了
要得到差值是小时=
  24*(Sysdate - to_date('20160801 14:06:02','yyyyMMdd HH24:mi:ss'))
 分钟=  60*24*(Sysdate - to_date('20160801 14:06:02','yyyyMMdd HH24:mi:ss'))
 =  60*60*24*(Sysdate - to_date('20160801 14:06:02','yyyyMMdd HH24:mi:ss'))
  3 与字符串转换
To_char(Sysdate, 'yyyyMMddHH24:mi:ss' )
To_char(Systimestamp, 'yyyyMMddHH24:mi:ss ff') 精确到毫秒
To_charSysdate'HH24') 小时
To_charSystimestamp'ff') 精确到ff

4 几个时间函数的细微区别
CURRENT_DATE -- Returns the current date in the session time zone in a value in the Gregorian calendar, of the DATE datatype.得到 sessiontimezone时间


CURRENT_TIMESTAMP -- Returns the current dateand time in the session time zone as a TIMESTAMP WITH TIME ZONE value.  sessiontimezone时间戳

SYSDATE -- Returns the date and time of the operating system on whichthe database resides, taking into account the time zone of the databaseserver's operating system that was in effect when the database was started.操作系统的时间 
SYSTIMESTAMP -- Returns the system date,including fractional seconds and time zone of the system on which the databaseresides. 操作系统的时间戳 

 
如果不能深入理解以上时间的区别,在进行时间计算时会出现莫名的问题,比如job执行结果可能与在客户端执行的结果不相同。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值