sql - 插入精度为 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,但可以修改。然而,我似乎无法进入一个说明如何完成的页面(大多数人关注的是价值的形成)。
解决方案
这似乎失去了最后 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_precision
0 到 9。默认值为 6。默认格式由参数显式确定NLS_DATE_FORMAT
或由参数隐式确定NLS_TERRITORY
。大小从 7 到 11 个字节不等,具体取决于精度。此数据类型包含日期时间字段YEAR
、MONTH
、DAY
、HOUR
、MINUTE
和SECOND
。它包含小数秒,但没有时区。
如果更改时间戳的精度:
SELECT TO_CHAR(systimestamp(9), 'YYYYMMDDHH24MISSFF') as MY_TS FROM DUAL
UNION ALL
SELECT 'YYYYMMDDHHMMSSFFFFFFFFF' FROM DUAL;
输出:
MY_TS
-----------------------
20180802230708135745000
YYYYMMDDHHMMSSFFFFFFFFF
这给出了TIMESTAMP
9 位数的精度。
您还可以使用格式模型指定输出格式的精度FF9
(而不仅仅是FF
使用数据类型的默认精度):
SELECT TO_CHAR(systimestamp, 'YYYYMMDDHH24MISSFF9') as MY_TS FROM DUAL
UNION ALL
SELECT 'YYYYMMDDHHMMSSFFFFFFFFF' FROM DUAL;
输出:
MY_TS
-----------------------
20180802230936652602000
YYYYMMDDHHMMSSFFFFFFFFF
推荐阅读
- unity3d - Unity 2D 进行了屏幕截图,但它显示了上一个屏幕截图而不是当前屏幕截图
- php - URL 上的尾随斜杠而不是文件名
- ios - 将应用程序安装到设备 Xcode 11.6 时无法运行应用程序错误
- flutter - 可能无限项的列表:ListView.builder、StreamBuilder、FutureBuilder 还是其他?
- r - 如何根据特定条件删除行并连接两个数据框?
- javascript - 如何使用 js 获取 HTTP 用户代理标头?
- git - 删除本地环境中的远程分支
- ios - 在 iOS 模拟器上以发布模式 Flutter 启动应用程序时出现问题
- powershell - 在 Powershell 中拆分字符串
- javascript - 尝试使用 WORDPRESS 上显示的复选框从可折叠文件中导出从数据库(PhpMyAdmin)中提取的数据时遇到问题