首页 > 解决方案 > 插入精度为 9 的 systimestamp

问题描述

我正在尝试使用 systimestamp 在插入时填充完整的 9 精度的 oracle 时间戳(9)

column MY_TS format 99999999999999999999999999

SElECT TO_NUMBER(TO_CHAR(systimestamp, 'YYYYMMDDHH24MISSSSSFF'), '99999999999999999999999999') as MY_TS FROM DUAL;

CREATE TABLE T1 (MY_TS timestamp(9));
INSERT INTO T1 VALUES(systimestamp);
SELECT TO_NUMBER(TO_CHAR(MY_TS, 'YYYYMMDDHH24MISSSSSFF'), '99999999999999999999999999') as MY_TS FROM T1;

产量

                      MY_TS
---------------------------
    20180802152155270705139


Table created.


1 row created.


                      MY_TS
---------------------------
 20180802152155270735103000

这似乎失去了最后 3 位的精度。

我一直读到 systimestamp 的 Oracle 默认值为 6,但可以修改。然而,我似乎无法进入一个说明如何完成的页面(大多数人关注的是价值的形成)。

标签: sqloracleoracle11g

解决方案


这似乎失去了最后 3 位的精度。

它不会丢失最后 3 位精度;FF格式模型显示数据类型的默认精度

FF [1..9]

小数秒;不打印基数字符(使用 X 格式元素添加基数字符)。在 FF 之后使用数字 1 到 9 来指定返回的日期时间值的小数秒部分中的位数。如果不指定数字,则 Oracle 数据库使用为 datetime 数据类型指定的精度或数据类型的默认精度。

SELECT TO_CHAR(systimestamp, 'YYYYMMDDHH24MISSFF') as MY_TS FROM DUAL
UNION ALL
SELECT 'YYYYMMDDHHMMSSFFFFFFFFF' FROM DUAL;

输出:

MY_TS                 
-----------------------
20180802230042489334   
YYYYMMDDHHMMSSFFFFFFFFF

因此,它仅将小数秒输出到微秒精度,这是默认精度

TIMESTAMP [(fractional_seconds_precision)]

日期的年、月和日值,以及时间的小时、分钟和秒值,其中fractional_seconds_precision是 SECOND 日期时间字段的小数部分中的位数。可接受的值为fractional_seconds_precision0 到 9。默认值为 6。默认格式由参数显式确定NLS_DATE_FORMAT或由参数隐式确定NLS_TERRITORY。大小从 7 到 11 个字节不等,具体取决于精度。此数据类型包含日期时间字段YEARMONTHDAYHOURMINUTESECOND。它包含小数秒,但没有时区。

如果更改时间戳的精度:

SELECT TO_CHAR(systimestamp(9), 'YYYYMMDDHH24MISSFF') as MY_TS FROM DUAL
UNION ALL
SELECT 'YYYYMMDDHHMMSSFFFFFFFFF' FROM DUAL;

输出:

MY_TS                 
-----------------------
20180802230708135745000
YYYYMMDDHHMMSSFFFFFFFFF

这给出了TIMESTAMP9 位数的精度。

您还可以使用格式模型指定输出格式的精度FF9(而不仅仅是FF使用数据类型的默认精度):

SELECT TO_CHAR(systimestamp, 'YYYYMMDDHH24MISSFF9') as MY_TS FROM DUAL
UNION ALL
SELECT 'YYYYMMDDHHMMSSFFFFFFFFF' FROM DUAL;

输出:

MY_TS                 
-----------------------
20180802230936652602000
YYYYMMDDHHMMSSFFFFFFFFF

推荐阅读