首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 数据库 Oracle 模式的 date 与 time 类型介绍
更新时间:2023-11-14 03:16
本文介绍 OceanBase 数据库 Oracle 模式的 date 与 time 支持的类型和格式。
支持的类型和对应精度
OceanBase 数据库 Oracle 模式支持的类型与对应精度如下表所示。
| 日期和时间类型 | 格式 | 范围 | 大小 |
|---|---|---|---|
| DATE | YYYY-MM-DD | '1000-01-01'~'9999-12-31' | 3 |
| DATETIME | YYYY-MM-DD HH:MM:SS | '1000-01-01 00:00:00'~'9999-12-31 23:59:59' | 5+秒精度存储 |
| TIMESTAMP | YYYY-MM-DD HH:MM:SS | '1970-01-01 00:00:00'~'2037-12-31 23:59:59' | 4+秒精度存储 |
| TIME | HH:MM:SS | '-838:59:59'~'838:59:59' | 3+秒精度存储 |
| YEAR | YYYY(默认格式) | '1901到2155'和'0000' | 1 |
| YY | YY | '70到69' | - |
日期和时间类型中,DATETIME、TIMESTAMP、TIME 类型,默认是精确到秒,还支持指定秒精度参数,秒精度存储根据存储需求最大支持微秒(3 字节),秒精度存储根据精度不同,占用空间为 0~3 字节。
注意
在异构数据库之间进行迁移时,需要注意对应的精度和值范围,以及迁移工具的兼容性。
支持的格式
OceanBase 数据库 Oracle 模式中,可以用 TO_DATE 函数将 TIMSTAMP 类型转换为 DATE类型,有关该函数的详细信息,请参见《OceanBase 数据库 SQL 参考(Oracle 模式)》。
OceanBase 数据库支持以下时间单位:
(ns): 纳秒
(us):微秒
(ms):毫秒
(cs):厘秒
(s) :秒
OceanBase 数据库提供了三个设置时间字段格式的变量:
nls_date_format:用于控制 DATE 类型 str 的格式,以及 str 隐式转 DATE 类型的格式。
nls_timestamp_format:用于控制 TIMESTAMP 与 TIMESTAMP LTZ 类型 str 格式,以及 str 隐式转 TIMESTAMP 与 TIMESTAMP LTZ 类型的格式。
nls_timestamp_tz_format:用于控制 TIMESTAMP TZ 类型 str 格式,以及 str 隐式转 TIMESTAMP TZ的格式。
有关以上配置项的详细信息,请参见《OceanBase 数据库 参考指南》中的 系统变量 章节。
可以通过以下命令查看当前会话的时间字段的格式。
obclient> show variables like '%nls_%_format';
+-------------------------+----------------------------------+
| VARIABLE_NAME | VALUE |
+-------------------------+----------------------------------+
| nls_date_format | YYYY-MM-DD HH24:MI:SS |
| nls_timestamp_format | YYYY-MM-DD HH24:MI:SS.FF |
| nls_timestamp_tz_format | YYYY-MM-DD HH24:MI:SS.FF TZR TZD |
+-------------------------+----------------------------------+
3 rows in set (0.00 sec)
可以修改配置的值来保证数据写入的格式一致,在数据迁移的时候也可以统一格式来保证数据迁入成功。