2014-02-21 9 views
0

Я написал код, который позволяет мне конвертировать из UTC время в локальное время, но время, в которое я перехожу, является фиктивным значением, а также часовым поясом. Я хотел бы, чтобы это работало с фактическими данными, но я не уверен, как объединиться. Возможно, подзапрос?Преобразование часового пояса в таблицу данных sql

Вот мой запрос для преобразования часового пояса:

Select From_Tz(Cast(To_Timestamp('17-FEB-14 04.00.00.000000000 PM', 
'DD-MON-YY HH.MI.SS.FF9 AM') As Timestamp), 'UTC') 
At Time Zone 'America/New_York' As "Local Time" 
FROM DUAL; 

На месте '17 -FEB-14 04.00.00.000000000 PM»и„Америка/New_York“, я хотел бы передать значения, возвращаемые из следующего запроса:

Select s.Max(Date), time.Local_Time_Zone from Sales s 
join on s.customer_ID = time.customer_ID 
where s.customer_ID = 122; 

ответ

0

Если у вас есть только одна запись в таблице для этого ID, который, кажется, скорее всего, вам не нужно max() или подзапрос, вы можете просто выбрать непосредственно из этой таблицы, подобный:

select from_tz(cast(date_field as timestamp), 'UTC') 
    at time zone customer_time_zone as "Local Time" 
from customer_table; 

Я также предполагаю, что ваше поле «дата» на самом деле DATE, еще не TIMEZONE, но это еще не совсем понятно.

С форматированием для отображения:

select to_char(from_tz(cast(date_field as timestamp), 'UTC') 
    at time zone customer_time_zone, 'YYYY-MM-DD HH24:MI:SS') as "Local Time" 
from customer_table; 

LOCAL TIME 
------------------- 
2014-02-16 19:00:00 

SQL Fiddle


на основе обновленной вопрос, главным является то же самое, просто есть две таблицы, чтобы присоединиться:

select to_char(from_tz(cast(max(s.date_field) as timestamp), 'UTC') 
    at time zone t.local_time_zone, 'YYYY-MM-DD HH24:MI:SS') as "Local Time" 
from sales s 
join time t on t.customer_id = s.customer_id 
group by s.customer_id, t.local_time_zone; 

SQL Fiddle.

+0

Извините, я попытался упростить утверждение. Часовой пояс и дата взяты из двух разных таблиц и соединены вместе. Я уточнил свой оригинальный пост, чтобы уточнить. – user2242044

+0

@ user2242044 - та же идея; обновил ответ, чтобы использовать ваше соединение. –

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