sql >> Databasteknik >  >> RDS >> Oracle

Tidszonkonvertering i SQL-fråga

Du kan använda den här frågan utan att behöva oroa dig för ändringar i tidszonen.

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

Ex:

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

UPPDATERING:

Tack till Alex Poole för att du påminner om att när tidszon inte anges används lokal tidszon för konvertering.

För att tvinga datumet att identifieras som GMT, använd from_tz.

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


  1. Få AVG att ignorera noll- eller nollvärden

  2. SQL Server Temporary Object Caching

  3. Hur CONV() fungerar i MariaDB

  4. Inkludera kolumnnamn i SQLite-frågeresultat