Jawabannya adalah:Tergantung.
Secara total, basis data Anda memiliki tiga zona waktu
- Zona waktu sesi Anda:
SESSIONTIMEZONE
Ini dapat Anda ubah dengan ALTER SESSION SET TIME_ZONE=...
kapan saja. Ini relevan untuk hasil
-
CURRENT_DATE
-
LOCALTIMESTAMP
-
CURRENT_TIMESTAMP
Ini juga merupakan zona waktu target saat Anda melakukan CAST({TIMESTAMP/DATE without any timezone} AS TIMESTAMP WITH {LOCAL} TIME ZONE)
SESSIONTIMEZONE
. default dapat diatur oleh variabel lingkungan ORA_SDTZ
atau (di Windows) dengan entri registri HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ
(untuk Klien 32 bit), resp. HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ
(untuk Klien 64 bit).
- Zona waktu basis data:
DBTIMEZONE
Sebenarnya ini tidak begitu penting dalam penggunaan sehari-hari, ini hanya relevan untuk TIMESTAMP WITH LOCAL TIME ZONE
kolom tipe data dan mendefinisikan format penyimpanan.
Ini TIDAK zona waktu SYSDATE
atau SYSTIMESTAMP
!!!
Anda tidak dapat mengubah DBTIMEZONE
pada database Anda jika database berisi tabel dengan TIMESTAMP WITH LOCAL TIME ZONE
kolom dan kolom berisi data. Jika tidak, dapat diubah dengan ALTER DATABASE SET TIME_ZONE='...';
. Perubahan tidak berlaku sampai database dimatikan dan dimulai ulang.
DBTIMEZONE
diatur ketika database dibuat. Jika tidak ada zona waktu yang disediakan saat pembuatan database, maka Oracle default ke zona waktu sistem operasi server.
- Zona waktu sistem operasi server database:
Zona waktu ini relevan untuk hasil
-
SYSDATE
-
SYSTIMESTAMP
Secara alami zona waktu ini tidak dapat diubah pada tingkat basis data. Jika negara asal Anda menggunakan Waktu Musim Panas, zona waktu ini dapat berubah dua kali setahun. Anda dapat menginterogasinya dengan SELECT TO_CHAR(SYSTIMESTAMP, 'tzr') FROM dual;
, misalnya.
Jadi, jika OS Server DB Anda diatur dengan benar, maka Anda akan mendapatkan waktu musim panas mulai minggu depan (setidaknya untuk Eropa)