2017-09-28 8 views
0

Where節の入力パラメータに基づいてtimezoneを動的に変換できるクエリに苦労しています。 WITHのキーと値に基づいて、適切なタイムゾーン変換を決定できるはずです。システムのタイムゾーンはUTCです。ローカルへのpostgressql自動タイムゾーン変換

with 
    data(id, timezone) AS (values 
     (2, 'US/Pacific'), 
     (5, 'US/Mountain'), 
     (10, 'US/Eastern')) 

select data.id, marg.timestamp, marg.value, structure.market 
from data, marg, structure 
where id in (2,5,10) 
and marg.timestamp between '2017-01-01' and '2017-01-31' 

私は常に変更することなく変換を検出するために、よりスマートな方法を探していて、仕事に約8タイムゾーンを持ってAt Time Zone 'pst'

これは私がこれまでになく、構文はいくつかの助けを必要とするものです

また、これを達成するためのより良い方法があれば、私はフィードバックを受け入れる以上のものです。前もって感謝します!

理想的には、出力は次のようになります。

utc     |id| timezone | local_time   | value 
--------------------+--+------------+---------------------- +---------------- 
2017-01-01 22:19:36 |2 | US/Pacific | 2017-01-01 15:19:36 | 2435 
2017-01-10 22:29:36 |2 | US/Pacific | 2017-01-10 15:29:36 | 215 
2017-01-30 22:39:36 |2 | US/Pacific | 2017-01-30 15:29:36 | 2150 
2017-01-28 22:19:36 |5 | US/Mountain| 2017-01-28 16:19:36 | 11341 
2017-01-29 22:19:36 |5 | US/Mountain| 2017-01-29 16:19:36 | 131 
2017-01-04 22:19:36 |10| US/Mountain| 2017-01-04 16:19:36 | 134 
2017-01-05 22:19:36 |10| US/Eastern | 2017-01-05 18:19:36 | 2451 

を、それは私が正しくあなたを理解していれば、あなたがへのWANんわからない

答えて

0

をUTCにシステム時間がかかり、適切なタイムゾーンLOCAL_TIMEに変換し、いくつかのリストでタイムゾーンを使用して変換しますか?次に、ここのように:

t=# with 
    data(id, timezone) AS (values 
     (2, 'US/Pacific'), 
     (5, 'US/Mountain'), 
     (10, 'US/Eastern')) 
select *, now at time zone timezone ajusted from now() 
join data on true; 
       now    | id | timezone |   ajusted 
-------------------------------+----+-------------+---------------------------- 
2017-09-28 22:13:27.904796+01 | 2 | US/Pacific | 2017-09-28 14:13:27.904796 
2017-09-28 22:13:27.904796+01 | 5 | US/Mountain | 2017-09-28 15:13:27.904796 
2017-09-28 22:13:27.904796+01 | 10 | US/Eastern | 2017-09-28 17:13:27.904796 
(3 rows) 
+0

そのようなものです。必要な他の列を引き込む必要があります( 'marg.value、structure.market')。私は、出力がどのように表示されるべきかで説明を更新しました。この@ vao-tsunのご協力ありがとう – emmanueledu

関連する問題