Di Postgres, to_char()
adalah fungsi pemformatan tipe data yang mengubah argumen pertamanya menjadi string.
Format string ditentukan oleh argumen kedua.
to_char()
fungsi dapat digunakan untuk melakukan konversi berikut:
- cap waktu ke string
- interval ke string
- bilangan bulat ke string
- presisi nyata/ganda untuk string
- numerik ke string
Sintaks
Sintaksnya seperti ini:
to_char(timestamp, text)
to_char(interval, text)
to_char(int, text)
to_char(double precision, text)
to_char(numeric, text)
Di mana argumen pertama adalah nilai yang akan dikonversi (dalam salah satu tipe data yang terdaftar) dan text
adalah string format yang digunakan untuk memformat argumen pertama.
Contoh
Berikut ini contoh pemformatan nilai tanggal:
SELECT to_char(date '2020-12-25', 'Day, DDth Month YYYY');
Hasil:
Friday , 25 December 2020
Dalam hal ini, format string Day, DD Month YYYY
menentukan bagaimana tanggal diformat ketika dikembalikan sebagai string oleh to_char()
.
Pola Template
String format terdiri dari satu atau lebih pola template .
Pada contoh sebelumnya, format string saya adalah Day, DD Month YYYY
. Oleh karena itu, ini terdiri dari pola template berikut:
Day
DD
Month
YYYY
Saya bisa saja menggunakan lebih banyak atau lebih sedikit pola templat, dan hasilnya akan berbeda.
Misalnya, saya bisa melakukan hal berikut:
SELECT to_char(date '2020-12-25', 'Day');
Hasil:
Friday
Atau, string format saya bisa saja terdiri dari serangkaian pola template yang berbeda.
Misalnya:
SELECT to_char(date '2020-12-25', 'Dy, DD Mon YY');
Hasil:
Fri, 25 Dec 20
Pengubah Pola Template
Anda juga dapat menambahkan pengubah pola template ke string format Anda.
Hasilnya akan sedikit berbeda tergantung modifier yang digunakan.
Misalnya, contoh berikut menyajikan hari dalam sebulan sebagai nomor urut.
SELECT to_char(date '2020-12-25', 'Day, DDth Month YYYY');
Hasil:
Friday , 25 December 2020
Ini sama dengan contoh pertama tetapi perbedaannya adalah saya menambahkan th
pengubah template sebagai sufiks ke DD
pola pola. Ini menambahkan akhiran nomor urut ke hari dalam sebulan.
Oleh karena itu kami berakhir dengan 25 bukan hanya 25 .
Untuk menekankan efek pengubah template, berikut tampilannya saat diterapkan ke nilai yang berbeda.
SELECT
to_char(date '2020-12-01', 'DDth') AS "1",
to_char(date '2020-12-02', 'DDth') AS "2",
to_char(date '2020-12-03', 'DDth') AS "3",
to_char(date '2020-12-04', 'DDth') AS "4";
Hasil:
1 | 2 | 3 | 4 ------+------+------+------ 01st | 02nd | 03rd | 04th
Saya dapat menambahkan pengubah lain untuk menekan angka nol di depan jika diperlukan.
SELECT
to_char(date '2020-12-01', 'FMDDth') AS "1",
to_char(date '2020-12-02', 'FMDDth') AS "2",
to_char(date '2020-12-03', 'FMDDth') AS "3",
to_char(date '2020-12-04', 'FMDDth') AS "4";
Hasil:
1 | 2 | 3 | 4 -----+-----+-----+----- 1st | 2nd | 3rd | 4th
Dalam hal ini saya menambahkan FM
yang untuk "mode pengisian". Pengubah ini menekan nol di depan dan mengisi kosong.
Numerik
Contoh sebelumnya juga dapat diterapkan pada nilai numerik.
Namun, saat menggunakan nilai numerik, Anda harus menukar D
dengan salah satu 9
atau 0
.
SELECT
to_char(1, '9th') AS "1",
to_char(2, '9th') AS "2",
to_char(3, '9th') AS "3",
to_char(4, '9th') AS "4";
Hasil:
1 | 2 | 3 | 4 ------+------+------+------ 1st | 2nd | 3rd | 4th
Daftar Pola dan Pengubah Template
Pola template aktual yang dapat Anda gunakan bergantung pada apakah Anda memformat nilai tanggal/waktu atau angka.
Untuk daftar lengkap pola template yang tersedia, lihat:
- Pola &Pengubah Template untuk Pemformatan Tanggal/Waktu
- Pola &Pengubah Template untuk Pemformatan Numerik