sql >> Databáze >  >> RDS >> Oracle

Konverze časového pásma v dotazu SQL

Tento dotaz můžete použít, aniž byste se museli starat o změny časového pásma.

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

Příklad:

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

AKTUALIZACE:

Děkujeme Alexi Pooleovi za připomenutí, že když není zadáno časové pásmo, použije se pro převod místní časové pásmo.

Chcete-li vynutit rozpoznání data jako GMT, použijte from_tz.

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


  1. Způsob, jak extrahovat data hodnoty DateTime bez sekund

  2. 12 Doporučené postupy zabezpečení MySQL/MariaDB pro Linux

  3. Příklady CURRENT_TIMESTAMP – MySQL

  4. Jak mohu uzamknout tabulku při čtení pomocí Entity Framework?