2015-05-04 4 views
1

У меня есть 2 стола в улье.Как получить текущее время для данного часового пояса в улье

table1 содержит

timelocation 
2015-03-04 15:00 Chicago 
2015-03-04 15:00 Denver 
2015-03-04 15:00 Honolulu 

table2 содержит

ID      Description 
America/Chicago   CENTRAL STANDARD TIME        
America/Denver   MOUNTAIN STANDARD TIME        
Pacific/Honolulu   HAWAII-ALEUTIAN STANDARD TIME      

Для записи присутствующего в table1 сказать "2015-03-04 15:00 Чикаго", мне нужно сделать поиск в table2 для соответствующая запись в Чикаго. Он должен прочитать ID & Описание для chicago и вернуть текущее центральное стандартное время для Chicago i.e «2015-05-04 09:11».

Аналогичным образом для Денвера он должен возвращать Mountain Standard Time & для Гонолулу он должен вернуть HAWAII-ALEUTIAN STANDARD TIME.

Ожидаемый выход

timelocation 
2015-05-04 09:11 
2015-05-04 08:11 
2015-05-04 04:11 

Как я могу это сделать?

ответ

3

Я действительно не хочу писать этот запрос для вас, но, надеюсь, это укажет вам в правильном направлении. Вам необходимо зарегистрироваться tbl1 <=> tbl2. Извлеките город из соответствующих столбцов в каждой таблице; Функция split() поможет вам. Тогда есть отличная функция, которую вы можете найти here под названием from_utc_timestamp(), которая берет отметку времени (предполагается, что это UTC) и преобразует ее в данный часовой пояс. Вам также понадобится преобразовать столбец Description в его сокращенную зону. Вы можете найти их here. Удачи!

0

Попробуйте to_utc_timestamp ('2015-01-01 00:00:00', 'PST')

возвращает 2015-01-01 08:00:00

1

Вы должны присоединиться к table1 и table2 с помощью следующего запроса:

SELECT T1.timelocation,T2.ID, T2.Description, to_utc_timestamp(SUBSTRING(T1.timelocation,1,16),T2.ID) AS newtime 
FROM table 1 T1 INNER JOIN table2 T2 ON SUBSTRING(T1.timelocation,17)= SUBSTRING(regexp_extract(T2.ID,'/\w*',2),2) 

Здесь вывод функции регулярных выражений на скажем America/Chicago будет /Chicago, поэтому я делаю подстроку на выходе, чтобы извлечь Chicago и соответствовать подстроке столбца timelocation.

Для получения дополнительной информации о улой функции регулярных выражений regexp_extract(string subject, string pattern, int index) чеке @Hive Doc

+0

'подстрока (regexp_extract())' является излишеством. Просто используйте 'split ([str], '\\ /') [1]' – gobrewers14

Смежные вопросы