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

Cara Memformat Tanggal di Oracle

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Java - temukan penyebab pertama pengecualian

  2. Bagaimana menemukan versi komponen EBS R12

  3. Perbedaan Oracle IN vs Exist?

  4. Konversi dari Oracle's RAW(16) ke .NET's GUID

  5. SQL IN Klausul 1000 batas item