+(串联)运算符 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

+(串联)运算符

将 DATE 连接到 + 符号任一侧的 TIME 或 TIMETZ,并返回 TIMESTAMP 或 TIMESTAMPTZ。

语法

date + {time | timetz}

参数的顺序可以反转。例如,time + date

参数

date

数据类型为 DATE 的列,或一个隐式计算结果为 DATE 类型的表达式。

time

数据类型为 TIME 的列,或一个隐式计算结果为 TIME 类型的表达式。

timetz

数据类型为 TIMETZ 的列,或一个隐式计算结果为 TIMETZ 类型的表达式。

返回类型

如果输入为 date + time,则为 TIMESTAMP。

如果输入为 date + timetz,则为 TIMESTAMPTZ。

示例

示例设置

要设置示例中使用的 TIME_TEST 和 TIMETZ_TEST 表,请使用以下命令。

create table time_test(time_val time); insert into time_test values ('20:00:00'), ('00:00:00.5550'), ('00:58:00'); create table timetz_test(timetz_val timetz); insert into timetz_test values ('04:00:00+00'), ('00:00:00.5550+00'), ('05:58:00+00');

具有时间列的示例

下面的示例表 TIME_TEST 具有一个列 TIME_VAL(类型 TIME),其中插入了三个值。

select time_val from time_test; time_val --------------------- 20:00:00 00:00:00.5550 00:58:00

以下示例串联一个日期文本和一个 TIME_VAL 列。

select date '2000-01-02' + time_val as ts from time_test; ts --------------------- 2000-01-02 20:00:00 2000-01-02 00:00:00.5550 2000-01-02 00:58:00

以下示例串联一个日期文本和一个时间文本。

select date '2000-01-01' + time '20:00:00' as ts; ts --------------------- 2000-01-01 20:00:00

以下示例串联一个时间文本和一个日期文本。

select time '20:00:00' + date '2000-01-01' as ts; ts --------------------- 2000-01-01 20:00:00

具有 TIMETZ 列的示例

下面的示例表 TIMETZ_TEST 具有一个列 TIMETZ_VAL(类型 TIMETZ),其中插入了三个值。

select timetz_val from timetz_test; timetz_val ------------------ 04:00:00+00 00:00:00.5550+00 05:58:00+00

以下示例串联一个日期文本和一个 TIMETZ_VAL 列。

select date '2000-01-01' + timetz_val as ts from timetz_test; ts --------------------- 2000-01-01 04:00:00+00 2000-01-01 00:00:00.5550+00 2000-01-01 05:58:00+00

以下示例串联一个 TIMETZ_VAL 列和一个日期文本。

select timetz_val + date '2000-01-01' as ts from timetz_test; ts --------------------- 2000-01-01 04:00:00+00 2000-01-01 00:00:00.5550+00 2000-01-01 05:58:00+00

以下示例串联一个 DATE 文本和一个 TIMETZ 文本。该示例返回 TIMESTAMPTZ,默认情况下它采用 UTC 时区。UTC 比 PST 早 8 小时,因此结果比输入时间早 8 小时。

select date '2000-01-01' + timetz '20:00:00 PST' as ts; ts ------------------------ 2000-01-02 04:00:00+00