AT TIME ZONE
akzeptiert nur Literal oder Intervall.
Presto 320 fügt with_timezone
hinzu
(für timestamp
Werte) at_timezone
(für timestamp with time zone
Werte) genau für diesen Zweck.
Wenn Sie eine ältere Presto-Version verwenden (z. B. Athena zum Zeitpunkt dieses Schreibens), können Sie die folgende Problemumgehung verwenden. Sie können Ihren Zeitstempelwert in ein varchar
umwandeln , mit zone verketten und in timestamp with time zone
umwandeln .
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)
(Hinweis:Getestet auf Presto 320. Wenn dies auf Athena noch nicht funktioniert, lassen Sie es mich wissen.)