---
title: github-fill
description: "日期时间表达式 日期时间表达式（Datetime Expression）会生成日期时间数据类型的值。 日期时间表达式 日期时间表达式语法如下： {TIMESTAMP | DATE} string [ AT { LOCAL | TIME ZONE { &#x27;[ + | - ] hh:mi&#x27; | DBTIMEZONE | S…"
---
切换语言

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

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

# 日期时间表达式

更新时间：2026-04-10 14:25:50

[编辑](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/600.expression-of-oracle-mode/700.date-and-time-expressions-of-oracle-mode.md)  

日期时间表达式（Datetime Expression）会生成日期时间数据类型的值。

## 日期时间表达式

日期时间表达式语法如下：

```sql
{TIMESTAMP | DATE} string [ AT
  { LOCAL
  | TIME ZONE { '[ + | - ] hh:mi'
                     | DBTIMEZONE
                     | SESSIONTIMEZONE
                     | 'time_zone_name'
                     }
  } ]

```

`TIMESTAMP` 或 `DATE` 加上字符串字面量可以生成 `TIMESTAMP` 或 `DATE` 类型的值，注意字符串的格式要与系统变量 `NLS_TIMESTAMP_FORMAT` 和 `NLS_DATE_FORMAT` 一致。系统变量的值可以通过下面的 SQL 查询：

```sql
obclient> SELECT * from v$nls_parameters WHERE parameter like '%FORMAT';
+-------------------------+------------------------------+--------+
| PARAMETER               | VALUE                        | CON_ID |
+-------------------------+------------------------------+--------+
| NLS_DATE_FORMAT         | DD-MON-RR                    |      0 |
| NLS_TIMESTAMP_FORMAT    | DD-MON-RR HH.MI.SSXFF AM     |      0 |
| NLS_TIMESTAMP_TZ_FORMAT | DD-MON-RR HH.MI.SSXFF AM TZR |      0 |
+-------------------------+------------------------------+--------+
3 rows in set

```

例如，系统变量 `NLS_TIMESTAMP_FORMAT` 的值为 `DD-MON-RR HH.MI.SSXFF AM`，可以用下面的表达式生成一个 `TIMESTAMP` 类型的值。

```sql
obclient> SELECT TIMESTAMP '2020-01-01 10:00:00' FROM DUAL;
+---------------------------------+
| TIMESTAMP'2020-01-0110:00:00'   |
+---------------------------------+
| 01-JAN-20 10.00.00.000000000 AM |
+---------------------------------+
1 row in set

```

## 使用规则

如果指定 `AT LOCAL`，则数据库使用当前会话的时区。

如果指定 `AT TIME ZONE`，时区返回规则如下：

- `'[ + | - ] hh:mi'`：将时区指定为与 UTC 的偏移量。其中，`hh` 指定小时数，`mi` 指定分钟数。
 - `DBTIMEZONE`：使用在数据库创建期间建立的数据库时区。
 - `SESSIONTIMEZONE`：使用默认创建的或最近的 `ATLER SESSION` 语句创建的会话的会话时区。
 - `'time_zone_name'`：返回时区名称。关于有效时区区域的名称列表，可以通过字典视图 `V$TIMEZONE_NAMES` 查看。

## 示例

使用 `AT TIME ZONE` 将一个 `TIMESTAMP` 类型的值转换为另一个时区的值。

```sql
obclient> SELECT TIMESTAMP '2020-01-01 10:00:00' AT LOCAL FROM DUAL;
+--------------------------------------+
| TIMESTAMP'2020-01-0110:00:00'ATLOCAL |
+--------------------------------------+
| 01-JAN-20 10.00.00.000000 AM +08:00  |
+--------------------------------------+
1 row in set

obclient> SELECT TIMESTAMP '2020-01-01 10:00:00' AT TIME ZONE '-05:00' FROM DUAL;
+-------------------------------------------------+
| TIMESTAMP'2020-01-0110:00:00'ATTIMEZONE'-05:00' |
+-------------------------------------------------+
| 31-DEC-19 09.00.00.000000 PM -05:00             |
+-------------------------------------------------+
1 row in set

```

 上一篇 下一篇 ![有帮助](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) 咨询热线
