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で機能しない場合は、お知らせください。)