sql >> Base de Datos >  >> RDS >> PostgreSQL

Presto SQL:cambiar las zonas horarias usando la cadena de zona horaria que proviene como resultado de una consulta no funciona

AT TIME ZONE acepta solo literal o intervalo.

Presto 320 agrega with_timezone (para timestamp valores) at_timezone (para timestamp with time zone valores) exactamente para este propósito.

Si está utilizando una versión anterior de Presto (como Athena en el momento de escribir este artículo), puede utilizar la siguiente solución alternativa. Puede convertir su valor de marca de tiempo en un varchar , concatenar con zona y convertir 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:probado en Presto 320. Si esto aún no funciona en Athena, házmelo saber).