Oracle timestamp 類型增加值的問題

來源:互聯網
上載者:User
 在工作中我碰到這樣一個問題,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 函數了 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.