PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Presto SQL:Alterar fusos horários usando a string de fuso horário resultante de uma consulta não está funcionando


AT TIME ZONE aceita apenas literal ou intervalo.

Presto 320 adiciona with_timezone (para timestamp valores) at_timezone (para timestamp with time zone valores) exatamente para este fim.

Se você estiver usando uma versão mais antiga do Presto (como o Athena no momento da redação deste artigo), poderá usar a seguinte solução alternativa. Você pode converter seu valor de timestamp para um varchar , concatenar com zona e converter para timestamp with time zone .
presto> select cast(cast(t as varchar) || ' ' || zone as timestamp with time zone)
  from (values (timestamp '2017-06-01 12:34:56.789', 'US/Pacific')) x(t, zone);
                    _col0
---------------------------------------------
 2017-06-01 12:34:56.789 America/Los_Angeles
(1 row)

(Nota:testado no Presto 320. Se isso ainda não funcionar no Athena, me avise.)