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