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

3 Cara Mengembalikan Zona Waktu dari Nilai Datetime di Oracle

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    

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mengubah baris menjadi kolom di tabel Oracle

  2. Apa yang harus dilakukan jika Anda tidak dapat membuka kesalahan file objek bersama saat menggunakan driver ODBC Oracle Easysoft versi OCI?

  3. apa itu oracle EBS R12

  4. bagaimana cara memanggil satu proc yang disimpan dari anther dan memodifikasi refcursor yang dikembalikan?

  5. Petunjuk langkah demi langkah untuk Instalasi Oracle Virtual Box