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

Konwersja ciągu ze skróconą strefą czasową na znacznik czasu

W rzeczywistości Twoje zapytanie powinno wywołać błąd ORA-01857: not a valid time zone lub ORA-01882: timezone region not found

PDT nie jest prawidłowym regionem strefy czasowej, tj. jest niejednoznaczny. Uruchom to zapytanie, aby uzyskać różne znaczenia PDT :

SELECT tzabbrev, TZ_OFFSET(tzname), tzname
FROM v$timezone_names 
WHERE tzabbrev = 'PDT'
ORDER BY 2;

TZABBREV    TZ_OFFSET(TZNAME)   TZNAME
PDT -06:00  America/Inuvik
PDT -07:00  US/Pacific-New
PDT -07:00  America/Ensenada
PDT -07:00  America/Dawson
PDT -07:00  America/Dawson_Creek
PDT -07:00  America/Los_Angeles
PDT -07:00  America/Tijuana
PDT -07:00  America/Vancouver
PDT -07:00  America/Whitehorse
PDT -07:00  Canada/Pacific
PDT -07:00  Canada/Yukon
PDT -07:00  Mexico/BajaNorte
PDT -07:00  PST
PDT -07:00  PST8PDT
PDT -07:00  US/Pacific
PDT -08:00  America/Juneau

Musisz użyć PST jako region strefy czasowej. Ustawienia czasu letniego są następnie określane od danego dnia:

SELECT 
    TO_TIMESTAMP_TZ('Jan 29 14:12:56 PST 2015','Mon dd hh24:mi:ss TZR YYYY') dt_ts_winter,
    TO_TIMESTAMP_TZ('Jun 29 14:12:56 PST 2015','Mon dd hh24:mi:ss TZR YYYY') dt_ts_summer 
FROM dual;

DT_TS_WINTER                            DT_TS_SUMMER
2015-01-29 14:12:56.000000000 -08:00    2015-06-29 14:12:56.000000000 -07:00

Ponieważ twoje wartości są przechowywane jako VARCHAR2 (teraz wiesz, dlaczego nie powinieneś tego robić w ten sposób) możesz to zmienić za pomocą REGEXP_REPLACE(dt_string, 'PDT', 'PST')




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 12c kolumny TOŻSAMOŚĆ

  2. Zrozumienie wyników Execute Explain Plan w Oracle SQL Developer

  3. java.sql.SQLRecoverableException:Karta sieciowa nie może nawiązać połączenia

  4. ORA-29913:błąd podczas wykonywania objaśnienia ODCIEXTTABLEOPEN

  5. ORA-00911:nieprawidłowy znak