Di Oracle Database, TO_CHAR(datetime)
fungsi mengonversi nilai waktu atau interval menjadi VARCHAR2
nilai dalam format yang ditentukan oleh format tanggal.
Sintaks
Sintaksnya seperti ini:
TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ])
Dimana:
datetime
dapat berupa nilaiDATE
,TIMESTAMP
,TIMESTAMP
WITH
TIME
ZONE
,TIMESTAMP
WITH
LOCAL
TIME
ZONE
tipe datainterval
dapat berupa nilaiINTERVAL
DAY
TO
SECOND
, atauINTERVAL
YEAR
TO
MONTH
tipe datafmt
adalah model format opsional yang menentukan bagaimana hasil harus diformat'nlsparam'
adalah argumen opsional yang menentukan bahasa yang digunakan untuk menampilkan nama dan singkatan bulan dan hari.
Contoh
Berikut ini contoh untuk didemonstrasikan:
SELECT TO_CHAR(DATE '2035-09-26', 'DY, DD MONTH YYYY')
FROM DUAL;
Hasil:
WED, 26 SEPTEMBER 2035
Jadi, ia mengembalikan tanggal yang diberikan dalam argumen pertama, dalam format yang ditentukan oleh argumen kedua.
Argumen kedua menyediakan model format. Model format dapat terdiri dari satu atau lebih elemen format. Misalnya, DY
adalah elemen format, seperti DD
, MONTH
, dll.
Lihat Daftar Lengkap Elemen Format Datetime ini di Oracle untuk daftar elemen format yang dapat digunakan untuk memformat nilai datetime dengan fungsi ini.
Format Default
Jika Anda menghilangkan fmt
argumen, hasilnya akan dikonversi sebagai berikut:
DATE
nilai dikonversi ke nilai dalam format tanggal default.TIMESTAMP
danTIMESTAMP
WITH
LOCAL
TIME
ZONE
nilai dikonversi ke nilai dalam format stempel waktu default.TIMESTAMP
WITH
TIME
ZONE
nilai dikonversi ke nilai dalam stempel waktu default dengan format zona waktu.- Nilai interval dikonversi ke representasi numerik literal interval.
Berikut ini contoh konversi DATE
nilai tanpa menentukan format:
SELECT TO_CHAR(DATE '2035-09-26')
FROM DUAL;
Hasil:
26/SEP/35
Dalam hal ini, format tanggal default sesi saya adalah DD/MON/RR
, dan hasilnya mencerminkan itu. Saya tahu bahwa ini adalah format tanggal default sesi saya karena saya menanyakan V$NLS_PARAMETERS
view, yang menunjukkan nilai parameter NLS saat ini.
Lihat Cara Memeriksa Nilai Parameter NLS jika Anda perlu memeriksanya.
Lihat juga Cara Mengubah Format Tanggal Sesi Anda jika Anda ingin mengubah format tanggal waktu default untuk sesi Anda saat ini.
Interval
Berikut adalah contoh yang menampilkan nilai interval dalam format default:
SELECT TO_CHAR(INTERVAL '25-2' YEAR TO MONTH)
FROM DUAL;
Hasil:
+25-02
'nlsparam'
Argumen
'nlsparam'
argumen menentukan bahasa di mana nama bulan dan hari dan singkatan dikembalikan. Argumen ini dapat memiliki bentuk berikut:
'NLS_DATE_LANGUAGE = language'
Contoh:
SELECT
TO_CHAR(
DATE '2035-09-26',
'DY, DD MONTH YYYY',
'NLS_DATE_LANGUAGE = SPANISH'
)
FROM DUAL;
Hasil:
MIÉ, 26 SEPTIEMBRE 2035
Argumen Null
Melewati null
menghasilkan null
:
SET NULL 'null';
SELECT TO_CHAR(null)
FROM DUAL;
Hasil:
null
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. Di sini saya menetapkan bahwa string null
harus dikembalikan.
Argumen Tidak Ada
Memanggil fungsi tanpa meneruskan argumen apa pun, menghasilkan kesalahan:
SELECT TO_CHAR()
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT TO_CHAR() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
Melewati terlalu banyak argumen juga menyebabkan kesalahan:
SELECT TO_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' )
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT TO_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' ) FROM DUAL Error at Command Line : 1 Column : 72 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: