Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Zeitzonenkonvertierung in der SQL-Abfrage

Sie können diese Abfrage verwenden, ohne sich um Zeitzonenänderungen kümmern zu müssen.

select to_char(cast(application_recv_date as timestamp) at time zone 'US/Eastern',
               'MON dd, YYYY'
              )
from application;

Beispiel:

EDT:

select cast(date'2014-04-08' as timestamp) d1,
       cast(date'2014-04-08' as timestamp) at time zone 'US/Eastern' d2
from dual;

D1                                 D2
---------------------------------- -------------------------------------------
08-APR-14 12.00.00.000000 AM       07-APR-14 08.00.00.000000 PM US/EASTERN

EST:

select cast(date'2014-12-08' as timestamp) d1,
       cast(date'2014-12-08' as timestamp) at time zone 'US/Eastern' d2
from dual;

D1                                 D2
---------------------------------- -------------------------------------------
08-DEC-14 12.00.00.000000 AM       07-DEC-14 07.00.00.000000 PM US/EASTERN

UPDATE:

Danke an Alex Poole für den Hinweis, dass, wenn keine Zeitzone angegeben ist, die lokale Zeitzone für die Konvertierung verwendet wird.

Um zu erzwingen, dass das Datum als GMT erkannt wird, verwenden Sie from_tz.

from_tz(cast(date'2014-12-08' as timestamp), 'GMT') at time zone 'US/Eastern'