Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Konversi String dengan Zona Waktu Singkat ke Timestamp

Sebenarnya kueri Anda seharusnya memunculkan kesalahan ORA-01857: not a valid time zone atau ORA-01882: timezone region not found

PDT bukan wilayah zona waktu yang valid, artinya ambigu. Jalankan kueri ini untuk mendapatkan arti yang berbeda dari 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

Anda harus menggunakan PST sebagai wilayah zona waktu. Pengaturan musim panas kemudian ditentukan dari hari tertentu:

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

Karena nilai Anda disimpan sebagai VARCHAR2 (sekarang Anda tahu mengapa Anda tidak harus melakukannya seperti ini) Anda dapat mengubahnya dengan 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. Instal klien Oracle Instan ke dalam wadah Docker untuk Python cx_Oracle

  2. SQL Cara Memilih item tanggal terbaru

  3. dapatkan daftar angka di antara dua kolom

  4. subquery mengembalikan lebih dari satu baris

  5. Apa sebenarnya parameter IN, OUT, IN OUT di PL/SQL?