Di bawah ini adalah tiga cara untuk mengembalikan informasi zona waktu dari nilai datetime di Oracle Database.
EXTRACT()
Fungsi
EXTRACT(datetime)
fungsi digunakan untuk mengekstrak berbagai bagian datetime dari nilai datetime. Ini termasuk informasi zona waktu.
Ini contohnya:
SELECT EXTRACT(
TIMEZONE_REGION FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin'
)
FROM DUAL;
Hasil:
Australia/Darwin
Dalam hal ini, saya menggunakan TIMEZONE_REGION
argumen untuk mengekstrak wilayah zona waktu.
Argumen yang tersedia untuk mengekstrak berbagai info zona waktu adalah:
TIMEZONE_HOUR
TIMEZONE_MINUTE
TIMEZONE_REGION
TIMEZONE_ABBR
Anda juga dapat menggunakan TIMEZONE_OFFSET
argumen, meskipun ini tidak muncul dalam sintaks terdokumentasi Oracle untuk fungsi ini.
Berikut ini contoh mendapatkan singkatan zona waktu:
SELECT
EXTRACT(TIMEZONE_ABBR FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin')
FROM DUAL;
Hasil:
ACST
Perhatikan bahwa, saat menggunakan argumen zona waktu di atas, nilai datetime harus dievaluasi ke ekspresi tipe data TIMESTAMP WITH TIME ZONE
atau TIMESTAMP WITH LOCAL TIME ZONE
.
EXTRACT()
function juga menerima argumen untuk bagian datetime lainnya, seperti YEAR
, MONTH
, HOUR
, dll.
TO_CHAR(datetime)
Fungsi
Kita juga dapat menggunakan TO_CHAR(datetime)
berfungsi sebagai metode alternatif untuk mendapatkan info zona waktu dari nilai datetime.
Fungsi ini menerima nilai datetime atau interval sebagai argumen pertama, dan model format sebagai argumen kedua. Fungsi kemudian mengonversi nilai menjadi tipe data VARCHAR2
dalam format yang ditentukan.
Model format menentukan format untuk mengembalikan nilai datetime/interval. Model format terdiri dari satu atau lebih elemen format. Hal ini memungkinkan kami untuk dengan hati-hati menyusun hasil untuk mencerminkan format yang kami inginkan.
Jika kami hanya ingin mengembalikan info zona waktu, kami dapat menggunakan salah satu elemen format untuk tujuan khusus itu.
Ada beberapa elemen format berbeda yang dapat kita gunakan saat mengembalikan informasi zona waktu dari nilai datetime.
Mari kita mulai dengan TZR
elemen format:
SELECT TO_CHAR(
TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin',
'TZR'
)
FROM DUAL;
Hasil:
AUSTRALIA/DARWIN
Elemen format ini mengembalikan wilayah zona waktu. Jika nilai datetime hanya menyertakan offset zona waktu, maka itu akan dikembalikan.
TZD
elemen format dapat digunakan untuk mengembalikan informasi musim panas. Ini mengembalikan informasi zona waktu dalam bentuk singkatan.
Contoh:
SELECT TO_CHAR(
TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin',
'TZD'
)
FROM DUAL;
Hasil:
ACST
Atau, kita dapat menggunakan TZH
dan TZM
elemen format untuk mengembalikan jam dan menit zona waktu, berdasarkan offset zona waktu.
SELECT TO_CHAR(
TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin',
'TZH:TZM'
)
FROM DUAL;
Hasil:
+09:30
TZ_OFFSET()
Fungsi
TZ_OFFSET()
fungsi mengembalikan offset zona waktu yang sesuai dengan argumen berdasarkan tanggal pernyataan dieksekusi.
Berikut ini contoh penggunaan TZ_OFFSET()
untuk mengembalikan offset zona waktu berdasarkan wilayah zona waktu yang dikembalikan oleh the EXTRACT()
fungsi:
SELECT TZ_OFFSET(
EXTRACT(TIMEZONE_REGION FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin')
)
FROM DUAL;
Hasil:
+09:30
Kami juga dapat melewati SESSIONTIMEZONE
atau DBTIMEZONE
ke TZ_OFFSET()
untuk mengembalikan zona waktu sesi dan database kami saat ini:
SELECT
TZ_OFFSET(SESSIONTIMEZONE) AS "Session",
TZ_OFFSET(DBTIMEZONE) AS "DB"
FROM DUAL;
Hasil:
Session DB __________ _________ +10:00 +00:00