PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Presto SQL:la modifica dei fusi orari utilizzando la stringa del fuso orario risultante da una query non funziona

AT TIME ZONE accetta solo letterale o intervallo.

Presto 320 aggiunge with_timezone (per timestamp valori) at_timezone (per timestamp with time zone valori) esattamente per questo scopo.

Se stai utilizzando una versione Presto precedente (come Athena al momento della stesura di questo articolo), puoi utilizzare la seguente soluzione alternativa. Puoi trasmettere il valore del timestamp a un varchar , concatena con zone e trasmetti a 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:testato su Presto 320. Se questo non funziona ancora su Athena, fammi sapere.)