Di dunia database SQL, PostgreSQL dikenal luas karena ketangguhan dan fiturnya yang kaya. Salah satu fitur tersebut adalah dukungannya yang kuat untuk tipe date dan timestamp. Dalam panduan ini, kita akan membahas cara memformat tanggal di PostgreSQL, lengkap dengan contoh kode. Tutorial ini ditujukan untuk software engineer dan siapa pun yang paham teknis dan ingin memperdalam pengetahuan PostgreSQL mereka.
Memahami Date di PostgreSQL
Sebelum membahas cara memformat tanggal, penting untuk memahami bagaimana tanggal direpresentasikan di PostgreSQL. PostgreSQL menggunakan tipe data “Date” untuk menyimpan tanggal. Berikut cara membuat tabel dengan kolom DATE.
CREATE TABLE orders (
order_id serial PRIMARY KEY,
order_date DATE NOT NULL
);
Sekarang, mari masukkan beberapa data ke tabel orders.
INSERT INTO orders (order_date) VALUES
('2022-04-01'),
('2022-04-02'),
('2022-04-03');
PostgreSQL cukup pintar dan bisa mengenali tanggal dari sebuah string jika Anda memberikan tanggal dalam format ISO 6801.
Cara Memformat Tanggal di PostgreSQL: Menggunakan Fungsi TO_CHAR
Cara utama untuk memformat tanggal di PostgreSQL adalah dengan fungsi TO_CHAR. TO_CHAR memungkinkan kita memformat tipe date/time menjadi string dengan pola tertentu. Berikut cara penggunaannya:
TO_CHAR(date, format)
Daftar lengkap opsi string format tersedia di dokumentasi PostgreSQL. Berikut opsi format per Januari 2024:
| Pola | Deskripsi |
|---|---|
| HH | jam dalam sehari (01–12) |
| HH12 | jam dalam sehari (01–12) |
| HH24 | jam dalam sehari (00–23) |
| MI | menit (00–59) |
| SS | detik (00–59) |
| MS | milidetik (000–999) |
| US | mikrodetik (000000–999999) |
| FF1 | persepuluh detik (0–9) |
| FF2 | perseratus detik (00–99) |
| FF3 | milidetik (000–999) |
| FF4 | persepuluh milidetik (0000–9999) |
| FF5 | perseratus milidetik (00000–99999) |
| FF6 | mikrodetik (000000–999999) |
| SSSS, SSSSS | detik sejak tengah malam (0–86399) |
| AM, am, PM atau pm | penanda meridiem (tanpa titik) |
| A.M., a.m., P.M. atau p.m. | penanda meridiem (dengan titik) |
| Y,YYY | tahun (4 digit atau lebih) dengan koma |
| YYYY | tahun (4 digit atau lebih) |
| YYY | 3 digit terakhir tahun |
| YY | 2 digit terakhir tahun |
| Y | digit terakhir tahun |
| IYYY | tahun penomoran minggu ISO 8601 (4 digit atau lebih) |
| IYY | 3 digit terakhir tahun penomoran minggu ISO 8601 |
| IY | 2 digit terakhir tahun penomoran minggu ISO 8601 |
| I | digit terakhir tahun penomoran minggu ISO 8601 |
| BC, bc, AD atau ad | penanda era (tanpa titik) |
| B.C., b.c., A.D. atau a.d. | penanda era (dengan titik) |
| MONTH | nama bulan lengkap huruf kapital (diisi spasi hingga 9 karakter) |
| Month | nama bulan lengkap berhuruf awal kapital (diisi spasi hingga 9 karakter) |
| month | nama bulan lengkap huruf kecil (diisi spasi hingga 9 karakter) |
| MON | singkatan nama bulan huruf kapital (3 karakter dalam bahasa Inggris, panjang bervariasi sesuai lokal) |
| Mon | singkatan nama bulan berhuruf awal kapital (3 karakter dalam bahasa Inggris, panjang bervariasi sesuai lokal) |
| mon | singkatan nama bulan huruf kecil (3 karakter dalam bahasa Inggris, panjang bervariasi sesuai lokal) |
| MM | nomor bulan (01–12) |
| DAY | nama hari lengkap huruf kapital (diisi spasi hingga 9 karakter) |
| Day | nama hari lengkap berhuruf awal kapital (diisi spasi hingga 9 karakter) |
| day | nama hari lengkap huruf kecil (diisi spasi hingga 9 karakter) |
| DY | singkatan nama hari huruf kapital (3 karakter dalam bahasa Inggris, panjang bervariasi sesuai lokal) |
| Dy | singkatan nama hari berhuruf awal kapital (3 karakter dalam bahasa Inggris, panjang bervariasi sesuai lokal) |
| dy | singkatan nama hari huruf kecil (3 karakter dalam bahasa Inggris, panjang bervariasi sesuai lokal) |
| DDD | hari dalam setahun (001–366) |
| IDDD | hari dalam tahun penomoran minggu ISO 8601 (001–371; hari ke-1 dalam tahun adalah Senin pada minggu ISO pertama) |
| DD | hari dalam sebulan (01–31) |
| D | hari dalam seminggu, Minggu (1) sampai Sabtu (7) |
| ID | hari dalam seminggu ISO 8601, Senin (1) sampai Minggu (7) |
| W | minggu dalam sebulan (1–5) (minggu pertama dimulai pada hari pertama bulan) |
| WW | nomor minggu dalam setahun (1–53) (minggu pertama dimulai pada hari pertama tahun) |
| IW | nomor minggu dalam tahun penomoran minggu ISO 8601 (01–53; Kamis pertama dalam tahun berada di minggu 1) |
| CC | abad (2 digit) (abad ke-21 dimulai pada 2001-01-01) |
| J | Tanggal Julian (jumlah hari bulat sejak 24 November 4714 SM pada tengah malam waktu lokal; lihat Bagian B.7) |
| Q | kuartal |
| RM | bulan dalam angka Romawi huruf kapital (I–XII; I=Januari) |
| rm | bulan dalam angka Romawi huruf kecil (i–xii; i=Januari) |
| TZ | singkatan zona waktu huruf kapital (hanya didukung di to_char) |
| tz | singkatan zona waktu huruf kecil (hanya didukung di to_char) |
| TZH | jam zona waktu |
| TZM | menit zona waktu |
| OF | selisih zona waktu dari UTC (hanya didukung di to_char) |
Contoh memformat tanggal
Mari mulai dengan mengubah tanggal kita menjadi string sederhana yang mudah dibaca. Begini caranya:
SELECT order_id, TO_CHAR(order_date, 'DD Mon YYYY') as formatted_date
FROM orders;
Hasilnya akan terlihat seperti ini:
order_id | formatted_date
———+—————-
1 | 13 Jan 2024
2 | 12 Jan 2024
3 | 11 Jan 2024
4 | 10 Jan 2024
5 | 09 Jan 2024
Kita juga bisa mengambil bagian tertentu saja dari tanggal:
SELECT order_id, TO_CHAR(order_date, 'Day') as day_of_week
FROM orders;
order_id | day_of_week
———+————-
1 | Friday
2 | Thursday
3 | Wednesday
4 | Tuesday
5 | Monday
Kita bahkan bisa menggabungkan beberapa format jika mau:
SELECT order_id, TO_CHAR(order_date, 'Day, DD Mon YYYY') as detailed_date
FROM orders;
order_id | detailed_date
———+————————
1 | Friday, 13 Jan 2024
2 | Thursday, 12 Jan 2024
3 | Wednesday, 11 Jan 2024
4 | Tuesday, 10 Jan 2024
5 | Monday, 09 Jan 2024
Fungsi EXTRACT
Fungsi EXTRACT memudahkan akses ke semua bagian dari nilai date/time, seperti tahun, bulan, hari, dan lainnya.
SELECT order_id, EXTRACT(MONTH from order_date) as order_month
FROM orders;
order_id | order_month
———+————
1 | 1
2 | 1
3 | 1
4 | 1
5 | 1
Itulah dasar-dasar memformat tanggal di PostgreSQL. Tools ini seharusnya memberi Anda fondasi yang kuat untuk menangani data tanggal. Seperti semua hal dalam pemrograman, latihan adalah kuncinya: coba sendiri perintah-perintah ini dan lihat apa lagi yang bisa Anda kreasikan. Selamat ngoding!
Anda sebaiknya mencoba menjalankan query ini di Beekeeper Studio. :-)
Beekeeper Studio Adalah GUI Database Gratis & Open Source
Tool query & editor SQL terbaik yang pernah saya pakai. Semua yang saya butuhkan untuk mengelola database ada di sini. - ⭐⭐⭐⭐⭐ Mit
Beekeeper Studio cepat, intuitif, dan mudah digunakan. Beekeeper mendukung banyak sekali database, dan berjalan mulus di Windows, Mac, dan Linux.
Apa Kata Pengguna Tentang Beekeeper Studio
"Beekeeper Studio benar-benar menggantikan alur kerja SQL lama saya. Cepat, intuitif, dan membuat bekerja dengan database jadi menyenangkan lagi."
"Saya sudah mencoba banyak GUI database, tapi Beekeeper punya keseimbangan sempurna antara fitur dan kesederhanaan. Langsung jalan."