select to_utc_timestamp(current_timestamp(),'IST');
正在从utc
转换为ist
。
但是,
select to_utc_timestamp(current_timestamp(),'PHT');
PHT
时间没有转换,它只是返回utc
中的当前时间戳。
select current_timestamp(),to_utc_timestamp(current_timestamp(),'PHT');
| 2019-07-10 07:52:29.795 | 2019-07-10 07:52:29.795 |
仅返回utc
。
答案 0 :(得分:2)
您需要指定国家的大洲/首都
select to_utc_timestamp(current_timestamp(),'Asia/Manila');
答案 1 :(得分:0)
'PHT'
时区,因为java.time.ZoneId不包含这样的区域,尽管它包含IST
。使用这样的GMT偏移量表示法:
hive> select current_timestamp(),to_utc_timestamp(current_timestamp(),'GMT+8:00');
OK
2019-07-10 23:21:24.743 2019-07-10 15:21:24.743
Time taken: 0.096 seconds, Fetched: 1 row(s)
我不确定是菲律宾语中的GMT+8:00
还是GMT-8:00
,您应该更好地了解,如果您指定正确的GMT偏移量,to_utc_timestamp()
将可以正常工作。而且在Manilla中没有夏令时,因此此方法应该可以正常工作。
亚洲/马尼拉也可以正常工作,就像@ F.Lazarescu提到的那样,最好使用时区标识符代替GMT偏移,因为如果适用的话,将计算夏令时:
select current_timestamp(),to_utc_timestamp(current_timestamp(),'Asia/Manila');
OK
2019-07-11 23:09:47.257 2019-07-11 15:09:47.257
Time taken: 4.029 seconds, Fetched: 1 row(s)
也请看这篇相当有用的文章:Watch out for timezones with Sqoop, Hive, Impala and Spark
答案 2 :(得分:0)
请勿使用时区缩写作为标识符。 IST
可以是India Standard Time
,Israel Standard Time
或Ireland Standard Time
。 (还有许多其他歧义。)
IST
的意思是印度,请使用'Asia/Kolkata'
IST
来表示以色列,则使用'Asia/Jerusalem'
IST
时您表示不信任,请使用'Europe/Dublin'
PHT
代替'Asia/Manila'
有关完整列表,请参见Wikipedia上的list of tz database time zones。