улей конвертировать время PHT в UTC - PullRequest
2 голосов
/ 11 июля 2019
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 только.

Ответы [ 3 ]

2 голосов
/ 11 июля 2019

Вам необходимо указать континент / столицу страны:

select to_utc_timestamp(current_timestamp(),'Asia/Manila');
0 голосов
/ 11 июля 2019

Не используйте сокращения часовых поясов в качестве идентификаторов.IST может быть India Standard Time, Israel Standard Time или Ireland Standard Time.(Есть много других двусмысленностей.)

  • Если под IST вы имели в виду Индию, то используйте 'Asia/Kolkata'
  • Если под IST вы имели в виду Израиль, то используйте 'Asia/Jerusalem'
  • Если под IST вы подразумевали Irelant, тогда используйте 'Europe/Dublin'
  • Вместо PHT, используйте 'Asia/Manila' для Филиппин

См. список часовых поясов базы данных tz в Википедии для полного списка.

0 голосов
/ 11 июля 2019

'PHT' timezine не распознается, потому что java.time.ZoneId не содержит такой зоны, но содержит IST.Используйте обозначение смещения по Гринвичу, как это:

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, вы должны знать лучше, to_utc_timestamp() будет работать правильно, если вы укажетеправильное смещение по Гринвичу.И в Маниле нет перехода на летнее время, поэтому этот метод должен работать нормально.

Азия / Манила также отлично работает, и, как сказал @F.Lazarescu, лучше использовать идентификатор часового пояса вместо смещения по Гринвичу, поскольку переход на летнее время будетподсчитать, если применимо:

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)

Взгляните и на эту весьма полезную статью: Следите за часовыми поясами с Sqoop, Hive, Impala и Spark

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...