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

FROM_TZ() Fungsi di Oracle

Di Oracle Database, FROM_TZ() fungsi mengonversi nilai stempel waktu dan zona waktu menjadi TIMESTAMP WITH TIME ZONE nilai.

Anda meneruskan nilai stempel waktu dan zona waktu sebagai dua argumen terpisah, dan fungsi mengembalikannya sebagai TIMESTAMP WITH TIME ZONE nilai.

Sintaks

Sintaksnya seperti ini:

FROM_TZ(timestamp_value, time_zone_value)

Dimana timestamp_value adalah stempel waktu, dan time_zone_value adalah string karakter dalam format 'TZH:TZM' atau ekspresi karakter yang mengembalikan string dalam TZR dengan TZD opsional formatnya.

Contoh

Ini contohnya:

SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', '-04:00')
FROM DUAL;

Hasil:

01/JAN/30 12:30:35.000000000 PM -04:00

Menentukan Wilayah Zona Waktu

Berikut adalah contoh yang menggunakan wilayah zona waktu alih-alih offset zona waktu:

SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', 'America/St_Kitts')
FROM DUAL;

Hasil:

01/JAN/30 12:30:35.000000000 PM AMERICA/ST_KITTS

Ubah Zona Waktu

Anda dapat menggunakan AT LOCAL atau AT TIME ZONE klausa untuk mengubah stempel waktu yang dihasilkan ke zona waktu yang berbeda.

Contoh:

SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', 'America/St_Kitts')
    AT TIME ZONE 'Asia/Bangkok'
FROM DUAL;

Hasil:

01/JAN/30 11:30:35.000000000 PM ASIA/BANGKOK

Dan ini dia menggunakan AT LOCAL :

SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', 'America/St_Kitts')
    AT LOCAL
FROM DUAL;

Hasil:

02/JAN/30 02:30:35.000000000 AM AUSTRALIA/BRISBANE

Anda dapat menggunakan SESSIONTIMEZONE berfungsi untuk memeriksa zona waktu sesi saat ini, dan DBTIMEZONE untuk memeriksa zona waktu database.

Zona Waktu Tidak Valid

Melewati zona waktu yang tidak valid menghasilkan kesalahan:

SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', 'Mars/Rover')
FROM DUAL;

Hasil:

Error starting at line : 1 in command -
SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', 'Mars/Rover')
FROM DUAL
Error report -
ORA-01882: timezone region not found

Anda bisa mendapatkan daftar wilayah zona waktu yang valid dengan menanyakan V$TIMEZONE_NAMES lihat.

Inilah yang terjadi jika kami memberikan offset zona waktu yang berada di luar rentang yang diterima:

SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', '+50:00')
FROM DUAL;

Hasil:

Error starting at line : 1 in command -
SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', '+50:00')
FROM DUAL
Error report -
ORA-01874: time zone hour must be between -15 and 15

Argumen Null

Melewati null untuk argumen pertama menghasilkan kesalahan:

SET NULL 'null';
SELECT 
    FROM_TZ(null, '+10:00')
FROM DUAL;

Hasil:

Error starting at line : 1 in command -
SELECT 
    FROM_TZ(null, '+10:00')
FROM DUAL
Error at Command Line : 2 Column : 13
Error report -
SQL Error: ORA-00932: inconsistent datatypes: expected TIMESTAMP got CHAR
00932. 00000 -  "inconsistent datatypes: expected %s got %s"
*Cause:    
*Action:

Melewati null untuk argumen kedua mengembalikan null :

SET NULL 'null';
SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', null)
FROM DUAL;

Hasil:

null

Perhatikan bahwa secara default, SQLcl dan SQL*Plus mengembalikan ruang kosong setiap kali null terjadi sebagai akibat dari SQL SELECT penyataan.

Namun, Anda dapat menggunakan SET NULL untuk menentukan string berbeda yang akan dikembalikan. Pada contoh di atas, saya menetapkan bahwa string null harus dikembalikan.

Jumlah Argumen Tidak Valid

Melewati sejumlah argumen yang tidak valid menghasilkan kesalahan:

SELECT FROM_TZ(TIMESTAMP '2030-01-01 12:30:35')
FROM DUAL;

Hasil:

Error starting at line : 1 in command -
SELECT FROM_TZ(TIMESTAMP '2030-01-01 12:30:35')
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana mengatasi ORA-02014:tidak dapat memilih UNTUK PEMBARUAN dari tampilan dengan DISTINCT, GROUP BY

  2. Temukan panjang baris terpanjang dalam kolom di oracle

  3. kesalahan:ORA-65096:nama pengguna atau peran umum yang tidak valid di Oracle

  4. Mengidentifikasi Pertentangan Urutan ASH di RAC

  5. perbedaan kriteria pencarian antara Suka vs Berisi () di Oracle