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

Jak zebrać strefę czasową systemu operacyjnego z bazy danych Oracle w formacie string? (Przenieś/przekonwertuj datę na ts za pomocą tz)

Jeśli dane znajdują się już w tabeli Oracle SQL i musisz dokonać konwersji na znacznik czasu ze strefą czasową (na przykład w nowej kolumnie utworzonej w tej samej tabeli), nie musisz bezpośrednio przechodzić do systemu operacyjnego ani do używać Javy lub jakiejkolwiek innej rzeczy, innej niż sama baza danych Oracle.

Z twojego pytania nie wynika jasno, czy musisz założyć, że „data” miała być w strefie czasowej serwera (wspominasz „baza danych”, co zwykle oznacza serwer) czy w strefie czasowej klienta (wspominasz „sesję”, co oznacza Klient). Tak czy inaczej:

update <your_table>
set <timestamp_with_time_zone_col> = 
            from_tz(cast<date_col> as timestamp, dbtimezone)
;

lub użyj sessiontimezone jako drugi argument, jeśli tego potrzebujesz.

Zakłada się, że strefa czasowa bazy danych (i/lub sesji) jest prawidłowo skonfigurowana w db lub odpowiednio w kliencie. Jeśli tak nie jest / nie są, należy to najpierw naprawić. Oracle doskonale radzi sobie z czasem oszczędzania w ciągu dnia, jeśli parametry są na pierwszym miejscu ustawione poprawnie. (A jeśli tak nie jest, nie jest jasne, dlaczego miałbyś starać się, aby operacja była „bardziej poprawna” niż ta, którą obsługuje baza danych.)

Przykład:w poniższej klauzuli WITH symuluję tabelę z kolumną dt w typie danych date . Następnie konwertuję to na timestamp with time zone , w strefie czasowej (klienta) mojej sesji.

with
  my_table ( dt ) as ( 
    select to_date('2018-06-20 14:30:00', 'yyyy-mm-dd hh24:mi:ss') from dual 
  )
select dt,
       from_tz(cast(dt as timestamp), sessiontimezone) as ts_with_tz
from   my_table
;

DT                  TS_WITH_TZ                                       
------------------- -------------------------------------------------
2018-06-20 14:30:00 2018-06-20 14:30:00.000000000 AMERICA/LOS_ANGELES


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Prawidłowy sposób zapewniania użytkownikom dostępu do dodatkowych schematów w Oracle

  2. Utrzymywanie propagacji zawsze włączonej w strumieniach Oracle

  3. Ekskluzywna blokada stołu (odczytu) na Oracle 10g?

  4. Nie znaleziono odpowiedniego sterownika dla jdbc:oracle:thin:@localhost:1521:XE podczas uruchamiania aplikacji internetowej

  5. Kim jest Diana i dlaczego nie pozwala na kompilację moich obiektów bazy danych?