AT TIME ZONE
akceptuje tylko literał lub interwał.
Presto 320 dodaje with_timezone
(dla timestamp
wartości) at_timezone
(dla timestamp with time zone
wartości) dokładnie w tym celu.
Jeśli używasz starszej wersji Presto (takiej jak Athena w chwili pisania tego tekstu), możesz skorzystać z następującego obejścia. Możesz rzutować swoją wartość sygnatury czasowej na varchar
, połącz ze strefą i rzutuj na 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)
(Uwaga:testowane na Presto 320. Jeśli to nie działa jeszcze na Athenie, daj mi znać.)