Oracle timestamp 类型增加值的问题分享


在工作中我碰到这样一个问题,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 函数了

—-想了解更多的数据库相关异常处理怎么解决关注<计算机技术网>



本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/dtteaching/79401.html

(0)
上一篇 2020年4月16日
下一篇 2020年4月16日

精彩推荐