程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle timestamp 類型增加值的問題,oracletimestamp

Oracle timestamp 類型增加值的問題,oracletimestamp

編輯:Oracle教程

Oracle timestamp 類型增加值的問題,oracletimestamp


 在工作中我碰到這樣一個問題,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 函數了 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved