+ (連結) 演算子
+ 記号の両側のいずれかの方で 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 テーブルと TIMEZ_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 の例には、3 つの値が挿入された列 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 の例には、3 つの値が挿入された列 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 列と date リテラルを連結します。
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 列を連結します。この例では、デフォルトで UTC タイムゾーンにある TIMESTAMPTZ が返されます。UTC は PST よりも 8 時間進んでいるため、結果は入力時間より 8 時間進みます。
select date '2000-01-01' + timetz '20:00:00 PST' as ts;
ts ------------------------ 2000-01-02 04:00:00+00