2016-04-13 11 views
1

Ich habe eine Anforderung zu prüfen, die laufenden Aufgaben mit geplanten Startzeit (PST) und geplante Endzeit (PST) .Datentyp ist Zeitstempel mit Zeitzone für geplante Startzeit und geplante Endzeit.Oracle Zeitzone konvertieren UTC zu PST

sysdate (UTC) sollte zwischen dem Start- und Enddatum werden Aufgaben im Gange, um zu bestätigen

JIRA_KEY sch_start_time    sch_end_time 

1   11/04/2016 1:00:00 AM PST 14/04/2016 2:00:00 PM PST 

2   12/04/2016 2:00:00 AM PST 12/04/2016 5:00:00 AM PST 

3   12/04/2016 2:00:00 AM PST 14/04/2016 5:00:00 AM PST 

Erwartete Ausgabe -

JIRA_KEY sch_start_time    sch_end_time 

1   11/APR/2016 1:00:00 AM PST 14/APR/2016 2:00:00 PM PST 

3   12/APR/2016 2:00:00 AM PST 14/APR/2016 5:00:00 AM PST 

SYSDATE in UTC ist und ab jetzt ist 13/APR/2016 8:15 Uhr


Ich habe das versucht. Aber nicht sicher, abt die Konvertierung mit TO_TIMESTAMP_TZ

select JIRA_KEY,To_CHAR(SCH_END_TIME,'DD/MON/YY HH:MI:SS PM') as SCH_END_TIME 
FROM HW_JIRA_STATUS WHERE 
to_timestamp_tz(SYSDATE,'DD/MON/YY HH:MI:SS PM') between SCH_START_TIME and SCH_END_TIME 

Antwort

0

Wenn Sie das tun

to_timestamp_tz(SYSDATE,'DD/MON/YY HH:MI:SS PM') 

Sie implizit SYSDATE in einen String mit Ihrem NLS_DATE_FORMAT Konvertieren und dann Konvertieren dieser Zeichenfolge in einen Zeitstempel mit Zeitzone - Sie geben jedoch nicht die Zeitzone an, sodass standardmäßig die Zeitzone der Datenbank verwendet wird (was Sie trotzdem möchten).

auf NLS-Einstellungen Unter Berufung ist gefährlich, so dass Sie zumindest eine expliclt Formatmaske verwendet werden soll:

to_timestamp_tz(to_char(SYSDATE, 'DD/MON/YY HH:MI:SS PM'),'DD/MON/YY HH:MI:SS PM') 

... aber Sie können auch cast between data types ohne Zwischen Strings umzuwandeln; z.B. Verwenden Sie erneut die DB-Server-Zeitzone:

cast(SYSDATE as timestamp with time zone) 

Sie müssen keine Konvertierung selbst durchführen; Sie können stattdessen SYSTIMESTAMP verwenden:

WHERE SYSTIMESTAMP between SCH_START_TIME and SCH_END_TIME; 

Das ist bereits in der Zeitzone des DB-Servers.

+0

Vielen Dank für die gute Erklärung. –

0

Diese Abfrage

select JIRA_KEY,To_CHAR(SCH_END_TIME,'DD/MON/YY HH:MI:SS PM') as SCH_END_TIME 
FROM HW_JIRA_STATUS 
WHERE systimestamp AT TIME ZONE 'PST' between SCH_START_TIME and SCH_END_TIME 
Verwandte Themen