如何在運算過程中保留timestamp型別資料的毫秒精度?
今天在對某些timestamp型別的資料進行運算的過程中,發現毫秒資料都丟失了。
我們做個簡單的測試,建立一個測試表只包含一列,資料型別為timestamp,然後插入兩條記錄。
我們看到第一條資料包含毫秒資料,而第二條資料的毫秒資料為0。那麼是湊巧了嗎,當然不是。
那麼,如何保留毫秒資料呢?我們可以使用numtodsinterval函式。
numtodsinterval(<x>,<c>)
其中,
x是一個數字,
c是一個字串,表明x的單位,這個函式把x轉為interval day to second資料型別
常用的單位有 ('day','hour','minute','second')
接下來,我們透過例子看一下這個函式的用法。
我們做個簡單的測試,建立一個測試表只包含一列,資料型別為timestamp,然後插入兩條記錄。
點選(此處)摺疊或開啟
-
SQL>
-
SQL> select * from v$version;
-
-
BANNER
-
----------------------------------------------------------------
-
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
-
PL/SQL Release 10.2.0.4.0 - Production
-
CORE 10.2.0.4.0 Production
-
-
TNS for 64-bit Windows: Version 10.2.0.4.0 - Production
-
NLSRTL Version 10.2.0.4.0 - Production
-
-
SQL>
-
SQL> create table hoegh(h timestamp(6));
-
-
Table created
-
-
SQL> desc hoegh
-
Name Type Nullable Default Comments
-
---- ------------ -------- ------- --------
-
H TIMESTAMP(6) Y
-
-
SQL>
-
SQL> insert into hoegh values(systimestamp);
-
-
1 row inserted
-
-
SQL> insert into hoegh values(systimestamp-1);
-
-
1 row inserted
-
-
SQL> commit;
-
-
Commit complete
-
-
SQL> select * from hoegh;
-
-
H
-
--------------------------------------------------------------------------------
-
25-6月 -16 05.39.04.609000 上午
-
24-6月 -16 05.39.12.000000 上午
-
-
SQL>
- SQL>
那麼,如何保留毫秒資料呢?我們可以使用numtodsinterval函式。
numtodsinterval(<x>,<c>)
其中,
x是一個數字,
c是一個字串,表明x的單位,這個函式把x轉為interval day to second資料型別
常用的單位有 ('day','hour','minute','second')
接下來,我們透過例子看一下這個函式的用法。
點選(此處)摺疊或開啟
-
SQL> insert into hoegh values(systimestamp+numtodsinterval(-1,'day'))--減一天
-
2 ;
-
-
1 row inserted
-
-
SQL> insert into hoegh values(systimestamp+numtodsinterval(-1,'hour'))--減一小時
-
2 ;
-
-
1 row inserted
-
-
SQL> insert into hoegh values(systimestamp+numtodsinterval(-1,'minute'))--減一分鐘
-
2 ;
-
-
1 row inserted
-
-
SQL> insert into hoegh values(systimestamp+numtodsinterval(-1,'second'))--減一秒
-
2 ;
-
-
1 row inserted
-
SQL> insert into hoegh values(systimestamp+numtodsinterval(500/1000,'second'))--減500毫秒
-
2 ;
-
-
1 row inserted
-
-
SQL> commit;
-
-
Commit complete
-
-
SQL> select * from hoegh;
-
-
H
-
--------------------------------------------------------------------------------
-
25-6月 -16 05.39.04.609000 上午
-
24-6月 -16 05.39.12.000000 上午
-
24-6月 -16 05.46.08.556000 上午
-
25-6月 -16 04.46.42.314000 上午
-
25-6月 -16 05.46.21.346000 上午
-
25-6月 -16 05.47.36.039000 上午
-
25-6月 -16 05.48.27.288000 上午
-
-
7 rows selected
-
- SQL>
~~~~~~~ the end~~~~~~~~~
hoegh
2016.06.24
hoegh
2016.06.24
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30162081/viewspace-2120906/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- timestamp型別的加減運算型別
- Oracle中的TIMESTAMP資料型別Oracle資料型別
- [20130411]timestamp資料型別與運算.txt資料型別
- oracle中date資料型別與timestamp資料型別的轉換Oracle資料型別
- oracle將表中date資料型別修改為timestamp資料型別Oracle資料型別
- mysql 資料型別TIMESTAMPMySQL 資料型別
- Sqlserver:timestamp資料型別SQLServer資料型別
- ORACLE TIMESTAMP資料型別Oracle資料型別
- timestamp資料型別求差資料型別
- c語言運算過程中的型別自動轉換原則C語言型別
- C#插入Oracle中Timestamp型別資料C#Oracle型別
- MySQL資料庫中的timestamp型別與時區MySql資料庫型別
- 關於timestamp資料型別資料型別
- Oracle中的TIMESTAMP型別Oracle型別
- ORACLE DATE型別和TIMESTAMP型別DUMP換算Oracle型別
- C語言資料型別和算數運算C語言資料型別
- Java中的資料型別和運算子Java資料型別
- [大資料量]java移位運算與位運算與資料型別的儲存大資料Java資料型別
- python資料型別和四則運算Python資料型別
- oracle資料型別date和timestamp的轉化Oracle資料型別
- JAVA_資料型別介紹與基本資料型別之間的運算規則Java資料型別
- 二、python的邏輯運算與資料型別Python資料型別
- 保留資料庫表中的資料,把表中的欄位varchar2改成clob型別資料庫型別
- Sybase的timestamp型別型別
- opcode 運算元 5 中不同的型別型別
- JavaScript中的變數、資料型別以及運算子JavaScript變數資料型別
- Java中的小數運算與精度損失Java
- 混合運算中資料型別的轉換 (轉)資料型別
- ORACLE DATE和TIMESTAMP資料型別的比較(一) (轉)Oracle資料型別
- ORACLE DATE和TIMESTAMP資料型別的比較(二) (轉)Oracle資料型別
- oracle的timestamp型別使用Oracle型別
- TIMESTAMP型別的時區型別
- 不同型別資料運算型別
- 資料型別和運算子資料型別
- Java中的基本資料型別與引用資料型別Java資料型別
- 資料庫中Date型別的計算 DATEDIFF() 函式資料庫型別函式
- MySQL 中 整數型別的儲存和範圍計算過程詳解MySql型別
- sql學習過程1:sql server資料型別解析SQLServer資料型別