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

Bagaimana cara mengumpulkan zona waktu sistem operasi dari database Oracle dalam format string? (Migrasi/konversi tanggal ke ts dengan tz)

Jika data sudah ada di tabel Oracle SQL, dan Anda harus mengonversinya ke stempel waktu dengan zona waktu (misalnya, di kolom baru yang Anda buat di tabel yang sama), Anda tidak perlu membuka OS secara eksplisit, atau ke menggunakan Java atau hal lain apa pun, selain database Oracle itu sendiri.

Tidak jelas dari pertanyaan Anda apakah Anda harus menganggap "tanggal" itu dimaksudkan untuk berada di zona waktu server (Anda menyebutkan "basis data" yang biasanya berarti server) atau zona waktu klien (Anda menyebutkan "sesi" yang berarti klien). Apa pun itu:

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

atau gunakan sessiontimezone sebagai argumen kedua, jika itu yang Anda butuhkan.

Ini mengasumsikan bahwa database (dan/atau sesi) zona waktu diatur dengan benar di db, masing-masing di klien. Jika tidak / tidak, itu harus diperbaiki terlebih dahulu. Oracle sangat mampu menangani waktu penghematan siang hari, jika parameternya diatur dengan benar sejak awal. (Dan jika tidak, tidak jelas mengapa Anda mencoba membuat operasi Anda "lebih benar" daripada yang didukung database.)

Contoh:pada klausa WITH di bawah ini, saya mensimulasikan tabel dengan kolom dt dalam tipe data date . Kemudian saya mengubahnya menjadi timestamp with time zone , di zona waktu sesi saya (klien).

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. Tabel atau tampilan Oracle DB tidak ada

  2. BERGABUNG dengan kondisi dalam permintaan HQL?

  3. Bagaimana menghindari substitusi variabel di Oracle SQL Developer dengan 'trinidad &tobago'

  4. Pengelompokan ReadyStatement dengan pernyataan SQL yang berbeda

  5. Pilih nilai kolom tunggal dan simpan dalam variabel Oracle sql