Artikel ini berisi contoh umum pemformatan tanggal di Oracle Database.
Format tanggal default untuk sesi Anda ditentukan oleh berbagai parameter inisialisasi NLS (berikut cara memeriksanya). Anda dapat memanfaatkan parameter ini untuk menghasilkan pemformatan sadar lokal.
Anda juga dapat menggunakan fungsi seperti TO_CHAR(number)
untuk mengonversi tanggal menjadi string dan memformatnya persis seperti yang Anda suka dengan cepat.
Format Tanggal Default
Saat Anda mengembalikan tanggal di Oracle, secara default, itu dikembalikan dalam format tanggal default untuk sesi saat ini.
Contoh:
SELECT DATE '2030-12-10' FROM DUAL;
Hasil:
10/DEC/30
Dalam hal ini, format tanggal default sesi saya adalah DD/MON/RR
, dan hasilnya mencerminkan itu.
Anda dapat mengubah format dengan mengubah NLS_TERRITORY
parameter (yang secara implisit mengubah parameter lain seperti parameter datetime), atau mengubah NLS_DATE_FORMAT
parameter secara langsung.
Inilah yang terjadi ketika saya mengubah NLS_TERRITORY
parameter ke wilayah yang berbeda:
ALTER SESSION SET NLS_TERRITORY = 'Germany';
SELECT DATE '2030-12-10' FROM DUAL;
Hasil:
10.12.30
Format tanggal default telah diperbarui untuk mencerminkan format lokal tersebut.
Ada juga parameter NLS datetime lainnya, seperti NLS_TIME_FORMAT
, NLS_TIME_TZ_FORMAT
, NLS_TIMESTAMP_FORMAT
, dan NLS_TIMESTAMP_TZ_FORMAT
yang perlu Anda waspadai saat mengubah format datetime.
Lihat juga Cara Mengubah Format Tanggal Sesi Anda jika Anda ingin mengubah format waktu-tanggal default untuk sesi Anda saat ini.
TO_CHAR()
Fungsi
Tdia TO_CHAR(datetime)
function menerima nilai datetime, dan mengembalikan string yang diformat dengan cara yang Anda tentukan.
Berikut ini contoh singkatnya:
SELECT TO_CHAR(DATE '2035-09-26', 'Dy, DD Month YYYY')
FROM DUAL;
Hasil:
Wed, 26 September 2035
Di sini, fungsi 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.
Jika Anda tidak menentukan format, itu dikembalikan menggunakan format default untuk sesi.
Lihat Daftar Lengkap Elemen Format Datetime ini di Oracle untuk daftar elemen format yang dapat digunakan untuk memformat nilai datetime dengan fungsi ini.
Di bawah ini adalah contoh yang lebih spesifik.
Kembalikan Nama Hari
Anda dapat mengembalikan bagian tanggal individual jika diperlukan. Misalnya, Anda dapat mengembalikan hanya nama hari, hanya nama bulan, dll. Yang perlu Anda lakukan hanyalah menggunakan elemen format yang berlaku sebagai satu-satunya elemen format dalam model format Anda.
Berikut ini contoh mengembalikan nama hari:
SELECT TO_CHAR(DATE '2035-09-26', 'Day')
FROM DUAL;
Hasil:
Wednesday
Dalam hal ini saya mengembalikan nama hari penuh.
Kita bisa menggunakan Dy
seperti pada contoh sebelumnya untuk mengembalikan nama hari pendek:
SELECT TO_CHAR(DATE '2035-09-26', 'Dy')
FROM DUAL;
Hasil:
Wednesday
Kembalikan Nama Bulan
Berikut ini contoh mengembalikan nama bulan:
SELECT TO_CHAR(DATE '2035-09-26', 'Month')
FROM DUAL;
Hasil:
September
Dan nama bulan pendek:
SELECT TO_CHAR(DATE '2035-09-26', 'Mon')
FROM DUAL;
Hasil:
Sep
Sensitivitas Huruf Besar
Pada contoh sebelumnya, kami menggunakan huruf kapital pada huruf pertama untuk nama hari dan bulan.
Sebagai alternatif, kita dapat menggunakan semua huruf besar untuk mengembalikan nama hari dan bulan dalam huruf besar, dan semua huruf kecil untuk mengembalikannya dalam huruf kecil.
SELECT
TO_CHAR(DATE '2035-09-26', 'DY, Dy, dy')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'DAY, Day, day')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'MON, Mon, mon')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'MONTH, Month, month')
FROM DUAL;
Hasil:
WED, Wed, wed WEDNESDAY, Wednesday, wednesday SEP, Sep, sep SEPTEMBER, September, september
Bahasa
NLS_DATE_LANGUAGE
parameter digunakan untuk menentukan bahasa bagian tanggal yang dieja (seperti nama hari dan nama bulan). Nilai default parameter ini berasal dari NLS_LANGUAGE
parameter.
Berikut ini contoh memperbarui NLS_DATE_LANGUAGE
parameter, lalu mengembalikan tanggal yang diformat yang menyertakan nama hari dan nama bulan:
ALTER SESSION SET NLS_DATE_LANGUAGE = 'Spanish';
SELECT TO_CHAR(DATE '2035-09-26', 'Dy, DD Month YYYY')
FROM DUAL;
Hasil:
Mié, 26 Septiembre 2035
Bahasa juga dapat ditentukan secara eksplisit dari dalam TO_CHAR()
fungsi itu sendiri. Melakukan hal ini memungkinkan Anda untuk mengesampingkan sementara pengaturan bahasa default untuk sesi saat ini, tanpa mempengaruhi pengaturan tersebut.
Contoh:
ALTER SESSION SET NLS_DATE_LANGUAGE = 'English';
SELECT TO_CHAR(
DATE '2035-09-26',
'Dy, DD Month YYYY',
'NLS_DATE_LANGUAGE = Spanish'
)
FROM DUAL;
Hasil:
Mié, 26 Septiembre 2035
Dalam contoh ini, saya mengatur sesi saya saat ini untuk menggunakan bahasa Inggris, lalu menjalankan kueri untuk menampilkan tanggal menggunakan bahasa Spanyol.
Seperti yang disinggung sebelumnya, mengeluarkan tanggal dalam bahasa Spanyol tidak memengaruhi pengaturan bahasa Inggris. Untuk mendemonstrasikan ini, saya menjalankan kueri berikut segera setelah kueri itu (tanpa mengubah NLS_DATE_LANGUAGE
parameter).
SELECT TO_CHAR(
DATE '2035-09-26',
'Dy, DD Month YYYY'
)
FROM DUAL;
Hasil:
Wed, 26 September 2035
Seperti yang diharapkan, hasilnya dalam bahasa Inggris, yang merupakan bahasa default untuk sesi saat ini.