---
title: "TIMESTAMP WITH TIME ZONE 数据类型 - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: "TIMESTAMP WITH TIME ZONE 数据类型 TIMESTAMP WITH TIME ZONE 是 TIMESTAMP 的变体，它的值中包含时区区域名称或时区偏移量。本文主要介绍 TIMESTAMP WITH TIME ZONE 数据类型的语法、参数和使用说明。 语法 TIMESTAMP [(scale…"
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.5.0

# TIMESTAMP WITH TIME ZONE 数据类型

更新时间：2026-04-10 14:06:48

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/zh-CN/700.reference/500.sql-reference/100.sql-syntax/300.common-tenant-of-oracle-mode/300.basic-elements-of-oracle-mode/100.built-in-data-types-of-oracle-mode/400.date-time-and-interval-data-types-of-oracle-mode/400.timestamp-with-time-zone-data-type-of-oracle-mode.md)  

TIMESTAMP WITH TIME ZONE 是 TIMESTAMP 的变体，它的值中包含时区区域名称或时区偏移量。本文主要介绍 TIMESTAMP WITH TIME ZONE 数据类型的语法、参数和使用说明。

## 语法

```sql
TIMESTAMP [(scale)] WITH TIME ZONE

```

## 参数

`TIMESTAMP [(scale)] WITH TIME ZONE` 的阈值和精确度取决于 `scale` 的值，取值范围为 [0,9]。最大值为 9 （纳秒，即秒数精确至小数点 9 位），最小值为 0（秒，即秒数精确至小数点 0 位），默认值为 6。

## 使用说明

`TIMESTAMP [(scale)] WITH TIME ZONE` 存储了年、月、日、时、分和秒等信息，阈值和精确度取决于 `scale` 的值。与 `TIMASTAMP [(scale)]` 不同的是，它还可以存储时区信息，常用于存储跨地理区域的日期时间信息。取值范围为 `0001-01-01 00:00:00.000000000` ~ `9999-12-31 23:59:59.999999999`。

`TIMESTAMP WITH TIME ZONE` 数据类型的默认输入输出格式由 `NLS_TIMESTAMP_TZ_FORMAT` 决定，运行以下 SQL 语句查看默认格式：

```sql
SELECT @@NLS_TIMESTAMP_TZ_FORMAT FROM DUAL;

```

返回结果如下：

```sql
DD-MON-RR HH.MI.SSXFF AM TZR

```

如果需要自定义数据的格式，可以使用转换函数。在插入数据时，可以通过函数 TO_TIMESTAMP_TZ (char,fmt) 指定数据的输入格式。查询数据时，可以通过函数 TO_CHAR (datetime,fmt) 指定数据的输出格式。这两个转换函数会将字符串转化为参数 `fmt` 中定义的格式。在 `fmt` 未指明的情况下，使用默认格式。

在插入时区时，OceanBase 数据库支持使用时区偏移量和时区区域名称：

- 时区偏移量：与格林尼治标准时间 GMT 的差（小时和分钟）
 - 时区区域名称（TZR）及时区缩写（TZD）：国家/城市 时区缩写

## 示例

以下示例都使用 `TO_TIMESTAMP_TZ (char,fmt)` 输入时间戳值。

- 使用时区偏移量插入数值

  ```sql
  obclient> SELECT TO_TIMESTAMP_TZ('2020-01-01 11:00:00 -05:00','YYYY-MM-DD HH:MI:SS TZH:TZM') FROM DUAL;
  +-------------------------------------------------------------------------+
  | TO_TIMESTAMP_TZ('2020-01-0111:00:00-05:00','YYYY-MM-DDHH:MI:SSTZH:TZM') |
  +-------------------------------------------------------------------------+
  | 01-JAN-20 11.00.00.000000000 AM AMERICA/LOS_ANGELES                                  |
  +-------------------------------------------------------------------------+
  1 row in set

  ```
 - 使用时区区域名称及时区缩写

  ```sql
  obclient> SELECT TO_TIMESTAMP_TZ('2020-01-01 11:00:00 America/Los_Angeles PST','YYYY-MM-DD HH:MI:SS TZR TZD') FROM DUAL;
  +-------------------------------------------------------------------------+
  | TO_TIMESTAMP_TZ('2020-01-01 11:00:00 America/Los_Angeles PST','YYYY-MM-DDHH:MI:SS TZR TZD') |
  +-------------------------------------------------------------------------+
  |01-JUN-20 11.00.00.000000000 AM America/Los_Angeles PST                                  |
  +-------------------------------------------------------------------------+
  1 row in set

  ```

## 夏令时

OceanBase 数据库支持夏令时且用时区缩写表示夏令时信息，以 America/Los_Angeles 为例，夏令时 PDT 从每年的 3 月的第二个星期日到 11 月的第一个星期日执行，其余时间为 PST。当插入的值中只包含时区区域名称时，OceanBase 数据库会根据插入的时间信息判断当前插入的时区区域是否在夏令时时段，并在返回的结果中会包含时区缩写，以此指明当前时间是夏令时。

示例如下：

```sql
obclient> SELECT TO_TIMESTAMP_TZ('2020-02-01 11:00:00 America/Los_Angeles','YYYY-MM-DD HH:MI:SS TZR') FROM DUAL;
obclient> SELECT TO_TIMESTAMP_TZ('2020-06-01 11:00:00 America/Los_Angeles','YYYY-MM-DD HH:MI:SS TZR') FROM DUAL;

```

返回结果如下：

```sql
01-JUN-20 11.00.00.000000000 AM America/Los_Angeles PST
01-JUN-20 11.00.00.000000000 AM America/Los_Angeles PDT

```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
