我有两个时间戳,即开始= 15-03-11 15:10:10和完成= 15-03-11 15:10:10我需要减去它们( “完成 - 开始”)以找到持续时间。因为它们的差别是纳秒级别的,所以我需要分别将它们转换为15:10:10.000000001和15:10:10.000000015。PL SQL:如何显示纳秒的TIMESTAMP
1
A
回答
3
取决于它们是如何存储的 - TIMESTAMP列的默认设置只能保留6个小数位Oracle reference,因此必须声明TIMESTAMP(9)字段,如果是,那么差异也需要声明为INTERVAL(9)
0
版本,平台
首先,它是关于你的版本和您的服务器平台。(阅读OMG小马注)。 为什么?
版本? 如果您使用的是早于Oracle 9i的版本,则别无选择,只能使用“日期”数据类型。并且您无法在十亿分之几秒内以本地语言进行管理。
服务器平台? 时间来自操作系统。如果您的操作系统管理数十亿秒,则您将能够管理“时间戳”,其中粒度为第十亿个。
Esamples: Windows XP或Vista 不让你管理十亿分之一秒。
数据类型
如果你的数据库平台管理十亿分之一秒(为马克已经指出),可以为数据类型使用:TIMESTAMP(9)和间隔(时间量 )间隔时间为秒(9)。
0
为了补充Zep,Mark和OMG Ponies的答案 - 当然,如果这些值是从某些其他来源(例如科学设备)加载的,这些来源比您的OS/Oracle版本支持的精度要高,那么你可以根据需要存储和操作这些值。
例如,将它们存储为varchar2并编写您自己的会话例程。如果你必须走这条路线,对你的计算需要考虑的日常滚动等事情心存感激。
0
这对我有效。这个想法是将差异转换为字符串,并应用正则表达式来检索时间的适当部分,并将该部分转换为纳秒,并在最后加起来所有部分。我只做了秒(不是小时和分钟),但你明白了。
/* Formatted on 10/5/2012 5:35:08 PM (QP5 v5.149.1003.31008) */ SELECT TO_NUMBER ( REGEXP_SUBSTR (TO_CHAR (systimestamp - sysdate), '[0-9]{2}', 14), '99') * 1000000000 + TO_NUMBER ( REGEXP_SUBSTR (TO_CHAR ((systimestamp - sysdate)), '[0-9]{6}', 14), '999999') FROM dual
相关问题
- 1. 如何在纳秒
- 2. PL-SQL显示多行
- 3. 如何在PL/SQL中显示循环中的变量sql developer
- 4. select语句的pl/sql显示结果
- 5. 如何将秒表刻度转换为纳秒,毫秒和秒?
- 6. Oracle PL/SQL - 如何格式化屏幕上显示的数据?
- 7. PL/SQL显示使用功能
- 8. PL SQL输出没有显示
- 9. Pl-sql代码显示错误
- 10. PL/SQL光标不显示结果
- 11. Java 8:如何使用毫秒,微秒或纳秒创建DateTimeFormatter?
- 12. 装饰纳秒在Python纳秒的100的(大熊猫)
- 13. 如何使用两个游标并显示它们PL/SQL
- 14. 显示NTFS时间戳记为100纳秒粒度
- 15. 如何在PL/SQL
- 16. 如何在PL/SQL
- 17. 如何将循环转换为纳秒
- 18. clock_gettime如何达到纳秒分辨率?
- 19. SQL中的TimeStamp
- 20. 获取在纳秒
- 21. 如何在C#中使秒表显示秒和毫秒?
- 22. Java sql - 如何将TimeStamp插入到包含毫秒的mysql数据库中
- 23. 在sql server中显示微秒数
- 24. 以秒,毫秒显示datediff
- 25. 显示毫秒
- 26. 如何让Timestamp对象在JSON中的long类型中显示?
- 27. PL-SQL显式游标
- 28. 从OffsetDateTime删除分,秒和纳秒
- 29. 转换纳秒到毫秒不工作
- 30. 索纳塔模型显示
这可能有助于了解您使用的Oracle版本。 – 2011-03-15 21:14:30