2016-03-21 23 views
0

Meine unten stehende Abfrage fügt vier Tage zu meiner aktuellen Zeit hinzu, aber stattdessen muss ich vier Stunden hinzufügen. Ich füge den UTC-Offset hinzu.Stunden aus Unterabfrage zu meinem Zeitstempel hinzufügen

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

Willkommen bei Stack Overflow! . Bitte bearbeiten Sie Ihren Beitrag und formatieren Sie ihn zur besseren Lesbarkeit. – gmuraleekrishna

Antwort

0

Das Problem, das Sie in hier ausgeführt ist, dass das Ergebnis des Extraktes der Stunden als ganze Zahl (siehe B1 unten) zurückgeführt wird, und dann Subtrahieren, dass von REQUEST_TIME die Zahl der Tage Subtrahieren dass ein Ergebnis Sie haben nicht erwartet oder wollen (siehe C2 unten).

Was Sie suchen, glaube ich, würde erfordern, den B1-Wert auf ein Intervall von Stunden zu werfen (siehe D1 unten).

wählen REQUEST_TIME, TIMEZONE (current_timestamp, 'America/New_York', "Etc/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) 

Sie erwähnen Subselects in Frage und in Ihrem Beispiel-Code, ich aber ich didn‘ In diesem Fall brauchen Sie keinen Subselect.

+0

Hallo Scott, ich habe ein Feld in meiner Tabelle als REQUEST_TIME im UTC-Format. Ich muss dies dynamisch in die NY-Zeit umrechnen, indem ich entweder 4 oder 5 subtrahiere, abhängig von der Lichteinsparung. Diese Abfrage gibt mir den aktuellen Offset (4): Select Extract (Stunden von (wählen Sie TIMEZONE (current_timestamp, 'Amerika/New_York', 'Etc/GMT')) - current_timestamp ..... Ich brauche diesen Offset hinzugefügt werden in das REQUEST_TIME Feld Wenn ich gerade eine Subtraktion mache subtrahiert es 4 Tage, aber ich möchte 4 Stunden subtrahieren Ich kenne den Cast Befehl mit 4 Intervall aber wie kann ich diesen abgeleiteten Wert an meine Abfrage übergeben –

+0

Ok, habe ich völlig falsch verstanden Ihre Frage, aber ich denke, ich bekomme, was Sie jetzt wollen. Verschrottung/Überarbeitung meiner Antwort. – ScottMcG

Verwandte Themen