首批通过分布式安全可靠测评,为关键业务系统打造
TIMESTAMP 数据类型
更新时间:2025-09-14 20:23:57
TIMESTAMP 数据类型是 DATE 数据类型的扩展,用于存储 DATE 数据类型的年、月、日、时、分和秒等信息。本文主要介绍 TIMESTAMP 数据类型的语法、参数和使用说明。
语法
TIMESTAMP [(scale)]
参数
TIMESTAMP[(scale)] 的范围和精确度取决于 scale 的值,取值范围为 [0,9]。最大值为 9(纳秒,即秒数精确至小数点 9 位),最小值为 0(秒,即秒数精确至小数点 0 位),默认值为 6。
使用说明
TIMESTAMP 时间戳数据类型常用于存储时间精确度高和不需要考虑时区变换的数据。取值范围为 0001-01-01 00:00:00.000000000 ~ 9999-12-31 23:59:59.999999999。
TIMESTAMP 数据类型的默认输入输出格式由 NLS_TIMESTAMP_FORMAT 决定,运行以下 SQL 语句查看默认格式:
SELECT @@NLS_TIMESTAMP_FORMAT FROM DUAL;
返回结果如下:
DD-MON-RR HH.MI.SSXFF AM
如果需要自定义数据的格式,可以使用转换函数。在插入数据时,可以通过函数 TO_TIMESTAMP (char,fmt) 指定数据的输入格式。查询数据时,可以通过函数 TO_CHAR (datetime,fmt) 指定数据的输出格式。这两个转换函数会将字符串转化为参数 fmt 中定义的格式。在 fmt 未指明的情况下,使用默认格式。
示例
在表
Timestamp_Sample中创建了数据类型为TIMESTAMP的两列timestp1和timestp2,并且为timestp2指定了时间的精度为 3。向两列同时使用TO_TIMESTAMP(string, format)插入日期值 2020-01-01 11:00:00。从结果中可以看到timestp1由于没有指定scale的值,所以结果时间精度默认为 6 位,timestp2在指定后精度为 3 位。obclient> CREATE TABLE Timestamp_Sample(timestp1 TIMESTAMP, timestp2 TIMESTAMP(3)); Query OK, 0 rows affected obclient> INSERT INTO Timestamp_Sample(timestp1,timestp2) VALUES (TO_TIMESTAMP('2020-01-01 11:00:00','YYYY-MM-DD HH24:MI:SS'), TO_TIMESTAMP('2020-01-01 11:00:00','YYYY-MM-DD HH24:MI:SS')); Query OK, 1 row affected obclient> SELECT * FROM Timestamp_Sample; +------------------------------+---------------------------+ | TIMESTP1 | TIMESTP2 | +------------------------------+---------------------------+ | 01-JAN-20 11.00.00.000000 AM | 01-JAN-20 11.00.00.000 AM | +------------------------------+---------------------------+ 1 row in set使用函数
TO_CHAR (datetime,fmt)指定输出格式。obclient> SELECT TO_CHAR(TO_TIMESTAMP_TZ('25-FEB-20 11:00:00 AM America/Los_Angeles','DD-MON-RR HH:MI:SSXFF PM TZR'),'YYYY-MM-DD HH:MI:SSXFF PM TZR') Timestamp FROM DUAL; +------------------------------------------------------+ | Timestamp | +------------------------------------------------------+ | 2020-02-25 11:00:00.000000000 AM America/Los_Angeles | +------------------------------------------------------+ 1 row in set