如何在運算過程中保留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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql 資料型別TIMESTAMPMySQL 資料型別
- [20191219]oracle timestamp資料型別的儲存.txtOracle資料型別
- ETL過程中資料精度不準確問題
- python資料型別和四則運算Python資料型別
- 二、python的邏輯運算與資料型別Python資料型別
- Java中的資料型別和運算子Java資料型別
- [20241009]oracle timestamp with time zone資料型別的儲存.txtOracle資料型別
- JAVA_資料型別介紹與基本資料型別之間的運算規則Java資料型別
- opcode 運算元 5 中不同的型別型別
- JavaScript中的變數、資料型別以及運算子JavaScript變數資料型別
- Java中的小數運算與精度損失Java
- 不同型別資料運算型別
- 資料型別和運算子資料型別
- Java中的基本資料型別與引用資料型別Java資料型別
- c++primer——過載運算與型別轉換C++型別
- C語言中,四則運算導致資料型別的轉換C語言資料型別
- TypeScript 2.1中的型別運算 & 一個遞迴的Readonly泛型TypeScript型別遞迴泛型
- 高精度數學運算
- MySQL 的 timestamp 和 datetime 型別比較MySql型別
- mysql資料庫時間型別datetime、bigint、timestamp的查詢效率比較MySql資料庫型別
- javascript中的資料型別JavaScript資料型別
- Java中的資料型別Java資料型別
- 資訊部門如何在企業數字化轉型過程中雄起
- python基本資料型別計算Python資料型別
- JAVA中基本資料型別和引用資料型別Java資料型別
- JS中其他資料型別轉為number資料型別的方法JS資料型別
- 更高效能表現、更低資源佔用,高精度計算資料型別 DecimalV3 揭秘資料型別Decimal
- Hive中的集合資料型別Hive資料型別
- pandas中的series資料型別資料型別
- Python小知識:如何在Python 3中轉換資料型別Python資料型別
- MySQL中datetime和timestamp的區別MySql
- Oracle中Date和Timestamp的區別Oracle
- mysql資料庫date 、datetime、time、timestamp區別MySql資料庫
- Mysql日期(DATE, TIME, DATETIME, TIMESTAMP)型別的比較MySql型別
- JavaScript中的資料型別-儲存差別JavaScript資料型別
- 【OpenCV教程】OpenCV中的資料型別OpenCV資料型別
- PHP7中的資料型別PHP資料型別
- MySQL中資料型別的驗證MySql資料型別
- day02 go的資料型別和運算子Go資料型別