AT TIME ZONE
приема само литерал или интервал.
Presto 320 добавя with_timezone
(за timestamp
стойности) at_timezone
(за timestamp with time zone
стойности) точно за тази цел.
Ако използвате по-стара версия на Presto (като Athena от момента на писане), можете да използвате следното решение. Можете да прехвърлите стойността на вашето времево клеймо към varchar
, свържете със зоната и прехвърлете към 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)
(Забележка:тествано на Presto 320. Ако това все още не работи на Athena, уведомете ме.)