码迷,mamicode.com
首页 > 数据库 > 详细

Oracle timestamp 类型增加值的问题

时间:2016-04-11 08:51:49      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:

 在工作中我碰到这样一个问题,session表需要用到timestamp的字段,在进行timestamp字段更新时出现了为题,比如需要对session的有效期增加1小时。
采用 systimestamp + 1/24 会丢失秒后的精度,感觉增加之后就变成了date型的样子。经过研究发现oracle 有个函数叫NUMTODSINTERVAL ,可以解决这个问题。下面两个例子说明如何使用这个函数

增加一小时

    SELECT to_char(systimestamp + NUMTODSINTERVAL(1,‘hour‘),‘yyyy-mm-dd HH24:mi:ss:ff‘)to_char(systimestamp,‘yyyy-mm-dd HH24:mi:ss:ff‘) FROM dual;

增加一分钟

    SELECT to_char(systimestamp + NUMTODSINTERVAL(1,minut),‘yyyy-mm-dd HH24:mi:ss:ff‘), to_char(systimestamp,‘yyyy-mm-dd HH24:mi:ss:ff‘) FROM dual;

 

numtodesignterval 的原版解释如下:

NUMTODSINTERVAL converts n to an INTERVAL DAY TO SECOND literal. The argument n can be any NUMBER value or an expression that can be implicitly converted to a NUMBER value. The argument interval_unit can be of CHAR, VARCHAR2, NCHAR, or NVARCHAR2 datatype. The value for interval_unit specifies the unit of n and must resolve to one of the following string values:

  • ‘DAY‘
  • ‘HOUR‘
  • ‘MINUTE‘
  • ‘SECOND‘

从解释上看,NUMTODSINTERVAL函数还可以处理day和sesond的值增加,(处理值减少只要添加“-”在数字前就可以啦),真是很强大的函数。另外如果需要增加的是年或者月,
要选择NUMTOYMINTERVAL 函数了 

Oracle timestamp 类型增加值的问题

标签:

原文地址:http://www.cnblogs.com/shouce/p/5376985.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!