全部产品

日期时间表达式

更新时间:2020-03-27 13:45:09

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

语法如下:

  1. expr AT
  2. { LOCAL
  3. | TIME ZONE { ' [ + | - ] hh:mi'
  4. | DBTIMEZONE
  5. | 'time_zone_name'
  6. | expr
  7. }
  8. }

起始的 expr 可以是除 标量子查询表达式 以外的任意表达式,其计算结果为 TIMESTAMPTIMESTAMP WITH TIME ZONE 或者 TIMESTAMP WITH LOCAL TIME ZONE 等数据类型的值。DATE 数据类型并不支持。如果这个 expr 自身是日期时间表达式,则它必须在括号中闭合。

日期时间与时间间隔可以组合使用。

如果您指定了 AT LOCAL,OceanBase 将会使用当前会话时区。

AT TIME ZONE 的配置解释如下:

  • 字符串 '[+|-] hh:mi' 表示时区偏移量。例如,hh 指定小时数,mi 指定分钟数。
  • DBTIMEZONE:OceanBase 使用数据库创建时的数据库时区。
  • SESSIONTIMEZONE:OceanBase 使用默认的会话时区或在最新 ALTER SESSION 语句中指定的会话时区。
  • time_zone_name:OceanBase 返回 time_zone_name 指定的值作为 datetime_value_expr
    注意:夏令时特征需要使用时区区域名。这些时区区域名存储在一大一小两种类型的时区文件中。其中一个文件是默认文件,取决于环境以及 OceanBase 的版本。
  • expr:如果 expr 返回代表有效时区格式的字符串,则 OceanBase 返回在指定时区中的输入值。否则,OceanBase 返回一个错误。

以下示例展示了如何将一个时区的日期转换为另一个时区的日期:

  1. SELECT FROM_TZ(CAST(TO_DATE('1999-12-01 11:00:00',
  2. 'YYYY-MM-DD HH:MI:SS') AS TIMESTAMP), 'America/New_York')
  3. AT TIME ZONE 'America/Los_Angeles' "West Coast Time"
  4. FROM DUAL;