Operador + (Concatenação)
Concatena um DATE para um TIME ou TIMETZ em ambos os lados do símbolo + e retorna um TIMESTAMP ou TIMESTAMPTZ.
Sintaxe
date + {time | timetz}
A ordem dos argumentos pode ser invertida. Por exemplo, hora + data.
Argumentos
- data
-
Uma coluna de tipo de dados
DATE
ou uma expressão que é avaliada implicitamente como um tipoDATE
. - time
-
Uma coluna de tipo de dados
TIME
ou uma expressão que é avaliada implicitamente como um tipoTIME
. - timetz
-
Uma coluna de tipo de dados
TIMETZ
ou uma expressão que é avaliada implicitamente como um tipoTIMETZ
.
Tipo de retorno
TIMESTAMP se a entrada for date + time.
TIMESTAMPTZ se a entrada for date + timetz.
Exemplos
Exemplo de configuração
Para configurar as tabelas TIME_TEST e TIMETZ_TEST utilizadas nos exemplos, use o comando a seguir.
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');
Exemplos com uma coluna time
O TIME_TEST da tabela a seguir tem uma coluna TIME_VAL (tipo TIME) com três valores inseridos.
select time_val from time_test;
time_val --------------------- 20:00:00 00:00:00.5550 00:58:00
O exemplo a seguir concatena um literal de data e uma coluna 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
O exemplo a seguir concatena um literal de data e um literal de tempo.
select date '2000-01-01' + time '20:00:00' as ts;
ts --------------------- 2000-01-01 20:00:00
O exemplo a seguir concatena um literal de hora e um literal de data.
select time '20:00:00' + date '2000-01-01' as ts;
ts --------------------- 2000-01-01 20:00:00
Exemplos com uma coluna TIMETZ
O TIMETZ_TEST da tabela de exemplo a seguir tem uma coluna TIMETZ_VAL (tipo TIMETZ) com três valores inseridos.
select timetz_val from timetz_test;
timetz_val ------------------ 04:00:00+00 00:00:00.5550+00 05:58:00+00
O exemplo a seguir concatena um literal de data e uma coluna 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
O exemplo a seguir concatena uma coluna TIMETZ_VAL e um literal de data.
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
O exemplo a seguir concatena um literal DATE e um literal TIMETZ. O exemplo retorna um TIMESTAMPTZ que está no fuso horário UTC por padrão. O UTC está oito horas à frente do PST, então o resultado está oito horas antes do horário da entrada.
select date '2000-01-01' + timetz '20:00:00 PST' as ts;
ts ------------------------ 2000-01-02 04:00:00+00