Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Konwersja stref czasowych Oracle (przy użyciu from_tz)

to_timestamp() pobiera ciąg znaków (VARCHAR2, CHAR ...), jeśli spróbujesz podać datę, wtedy oracle przekonwertuje go na ciąg zgodnie z NLS_DATE_FORMAT, który może się różnić w różnych środowiskach i zwracać nieoczekiwane wyniki (jak w tym przypadku) .
Należy najpierw użyć to_char, aby zapytanie mogło wyglądać tak:

select to_date(to_char((from_tz(to_timestamp(to_char(DATABASE_DATE, 'YYYY-MM-DD HH:MI:SS PM'), 'YYYY-MM-DD HH:MI:SS PM') ,'America/New_York')
at time zone 'America/Los_Angeles'),'YYYY-MM-DD HH:MI:SS PM'),'YYYY-MM-DD HH:MI:SS PM') as localtime
from table

AKTUALIZACJA: jeśli dobrze rozumiem, to chcesz czegoś takiego:

select to_char((from_tz(to_timestamp(to_char(DATABASE_DATE, 'YYYY-MM-DD HH:MI:SS PM'), 'YYYY-MM-DD HH:MI:SS PM') ,'America/New_York')
    at time zone 'America/Los_Angeles'),'YYYY-MM-DD HH:MI:SS PM TZD') as localtime
    from table


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać liczbę rekordów za pomocą kursora odniesienia w oracle10g?

  2. Pobierz anonimowy wynik bloku PLSQL

  3. Jak zamienić kolumnę na rzędy w Oracle 10g

  4. Czy ten znak ukośnika w skrypcie Oracle PL/SQL jest błędem?

  5. Kod źródłowy istniejącego obiektu w Oracle