如何在运算过程中保留timestamp类型数据的毫秒精度?

今天在对某些timestamp类型的数据进行运算的过程中,发现毫秒数据都丢失了。
我们做个简单的测试,创建一个测试表只包含一列,数据类型为 timestamp,然后插入两条记录。

点击(此处)折叠或打开

  1. SQL>
  2. SQL> select * from v$version;

  3. BANNER
  4. ----------------------------------------------------------------
  5. Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
  6. PL/SQL Release 10.2.0.4.0 - Production
  7. CORE    10.2.0.4.0    Production

  8. TNS for 64-bit Windows: Version 10.2.0.4.0 - Production
  9. NLSRTL Version 10.2.0.4.0 - Production

  10. SQL>
  11. SQL> create table hoegh(h timestamp(6));

  12. Table created

  13. SQL> desc hoegh
  14. Name Type Nullable Default Comments
  15. ---- ------------ -------- ------- --------
  16. H TIMESTAMP(6) Y

  17. SQL>
  18. SQL> insert into hoegh values(systimestamp);

  19. 1 row inserted

  20. SQL> insert into hoegh values(systimestamp-1);

  21. 1 row inserted

  22. SQL> commit;

  23. Commit complete

  24. SQL> select * from hoegh;

  25. H
  26. --------------------------------------------------------------------------------
  27. 25-6月 -16 05.39.04.609000 上午
  28. 24-6月 -16 05.39.12.000000 上午

  29. SQL>
  30. SQL>
我们看到第一条数据包含毫秒数据,而第二条数据的毫秒数据为0。那么是凑巧了吗,当然不是。
那么,如何保留毫秒数据呢?我们可以使用numtodsinterval函数。
numtodsinterval(<x>,<c>) 
其中,
x是一个数字,
c是一个字符串,表明x的单位,这个函数把x转为interval day to second数据类型
常用的单位有 ('day','hour','minute','second')

接下来,我们通过例子看一下这个函数的用法。

点击(此处)折叠或打开

  1. SQL> insert into hoegh values(systimestamp+numtodsinterval(-1,'day'))--减一天
  2.   2 ;

  3. 1 row inserted

  4. SQL> insert into hoegh values(systimestamp+numtodsinterval(-1,'hour'))--减一小时
  5.   2 ;

  6. 1 row inserted

  7. SQL> insert into hoegh values(systimestamp+numtodsinterval(-1,'minute'))--减一分钟
  8.   2 ;

  9. 1 row inserted

  10. SQL> insert into hoegh values(systimestamp+numtodsinterval(-1,'second'))--减一秒
  11.   2 ;

  12. 1 row inserted
  13. SQL> insert into hoegh values(systimestamp+numtodsinterval(500/1000,'second'))--减500毫秒
  14.   2 ;

  15. 1 row inserted

  16. SQL> commit;

  17. Commit complete

  18. SQL> select * from hoegh;

  19. H
  20. --------------------------------------------------------------------------------
  21. 25-6月 -16 05.39.04.609000 上午
  22. 24-6月 -16 05.39.12.000000 上午
  23. 24-6月 -16 05.46.08.556000 上午
  24. 25-6月 -16 04.46.42.314000 上午
  25. 25-6月 -16 05.46.21.346000 上午
  26. 25-6月 -16 05.47.36.039000 上午
  27. 25-6月 -16 05.48.27.288000 上午

  28. 7 rows selected

  29. SQL>


                                                                                                       ~~~~~~~ the end~~~~~~~~~
                                                                                                                                                                                                               hoegh
                                                                                                                                                                                                           2016.06.24


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30162081/viewspace-2120906/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30162081/viewspace-2120906/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值