AT TIME ZONE
hanya menerima literal atau interval.
Presto 320 menambahkan with_timezone
(untuk timestamp
nilai) at_timezone
(untuk timestamp with time zone
nilai) persis untuk tujuan ini.
Jika Anda menggunakan versi Presto yang lebih lama (seperti Athena pada tulisan ini), Anda dapat menggunakan solusi berikut. Anda dapat memberikan nilai stempel waktu Anda ke varchar
, gabungkan dengan zona dan masukkan ke 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)
(Catatan:diuji pada Presto 320. Jika ini belum berhasil di Athena, beri tahu saya.)