2016-03-21 21 views
0

Şu anki sorgu şu andaki sürüme dört gün ekler, ancak bunun yerine dört saat eklemem gerekiyor. UTC ofsetini ekliyorum.Zaman çizelgesine subquery'den saat ekleme saati

select ,REQUEST_TIME, 
to_char(timestamp((REQUEST_TIME - cast(select extract(hours from 
(select TIMEZONE(current_timestamp, 'America/New_York','Etc/GMT')) - current_timestamp)))) , 
'YYYY-MM-DD HH24') as request_time_EST from Table 
+1

Yığın Taşmasına Hoş Geldiniz! . Lütfen daha iyi okunabilirlik için gönderinizi düzenleyin ve biçimlendirin. – gmuraleekrishna

cevap

0

Burada içine çalıştıran konu saatlik EXTRACT sonucu REQUEST_TIME bir sonuç veren gün bu sayıyı çıkararak olduğunu çıkarılarak daha sonra (aşağıdaki B1 bakınız) bir tamsayı olarak döndürülür ve olmasıdır Beklemediniz ya da istemediniz (aşağıdaki C2'ye bakınız).

Aradığınızı düşünüyorum, B1 değerini bir saat aralığına dökmeyi gerektirecektir (aşağıdaki D1'e bakınız).

seçme REQUEST_TIME, TIMEZONE (current_timestamp, 'Amerika/New_York', 'Vb/GMT') -

current_timestamp A1, 
extract(hours from TIMEZONE(current_timestamp, 'America/New_York','Etc/GMT') - current_timestamp) B1, 
request_time - extract(hours from TIMEZONE(current_timestamp, 'America/New_York','Etc/GMT') - current_timestamp) C1, 
request_time - cast(extract(hours from TIMEZONE(current_timestamp, 'America/New_York','Etc/GMT') - current_timestamp) || ' hours ' as interval) D1 
from table1; 

TESTDB.ADMIN(ADMIN)-> from table1; 
    REQUEST_TIME  | A1 | B1 |  C1  |   D1   
---------------------+----------+----+------------+--------------------- 
2016-01-31 12:00:00 | 04:00:00 | 4 | 2016-01-27 | 2016-01-31 08:00:00 
(1 row) 

Sen, söz konusu ve örnek kodda subselects kullanarak I anma ama etmedim' Bu durumda bir alt seçime ihtiyaç olduğunu görüyorum.

+0

Merhaba Scott, tablomda UTC biçiminde olan REQUEST_TIME olarak bir alanım var. Dinamik ışık tasarrufuna bağlı olarak bunu 4 veya 5 çıkartarak dinamik olarak NY zamanına dönüştürmem gerekiyor. Bu sorgu bana şu anki ofset (4) değerini verir: extract seç ( 'dan saat (TIMEZONE (current_timestamp, 'America/New_York', 'Etc/GMT'))) - current_timestamp ..... Eklenecek bu ofsete ihtiyacım var REQUEST_TIME alanına Eğer bir çıkarma çıkarırsanız 4 gün çıkarır, ama 4 saat çıkarmak istiyorum.Adım aralığını 4 aralıkla biliyorum ama bu türetilmiş değeri sorguma nasıl aktarabilirim –

+0

Tamam, yanlış anlaşılırım. Senin sorunun, ama şimdi istediğini elde ettiğimi düşünüyorum. – ScottMcG