Format tanggal mengubah tanggal menjadi teks dengan tata letak pilihan Anda, misalnya 03/15/2026 atau Thursday, January 15. Setiap database punya fungsinya sendiri, dan contoh-contoh di sini mencakup PostgreSQL, MySQL, SQLite, dan SQL Server.
Cara memformat tanggal di SQL
Berikan fungsi sebuah tanggal dan string format. Kode di dalam string format mewakili bagian-bagian tanggal, sedangkan sisanya disalin apa adanya. Di SQLite fungsinya adalah strftime(), dan kodenya diawali dengan %:
strftime(format, date)
SELECT strftime('%m/%d/%Y', '2026-03-15');
-- Output: 03/15/2026
SELECT strftime('%I:%M %p', '2026-03-15 14:30:00');
-- Output: 02:30 PM
Pada sebuah kolom, tanggal yang sama bisa ditampilkan dalam tata letak sebanyak yang Anda perlukan:
-- Input: orders
-- order_id | order_date
-- ---------+--------------------
-- 1 | 2026-01-15 09:42:00
-- 2 | 2026-03-02 16:05:00
SELECT
order_date,
strftime('%Y-%m-%d', order_date) AS iso_date,
strftime('%m/%d/%Y', order_date) AS us_date,
strftime('%d/%m/%Y', order_date) AS european_date
FROM orders;
-- Output:
-- order_date | iso_date | us_date | european_date
-- --------------------+------------+------------+--------------
-- 2026-01-15 09:42:00 | 2026-01-15 | 01/15/2026 | 15/01/2026
-- 2026-03-02 16:05:00 | 2026-03-02 | 03/02/2026 | 02/03/2026
Berikut kode yang paling sering Anda gunakan, beserta hasil masing-masing untuk 2026-03-15 14:30:45:
| Kode | Arti | Contoh |
|---|---|---|
%Y |
Tahun 4 digit | 2026 |
%m |
Bulan (01-12) | 03 |
%d |
Tanggal dalam bulan (01-31) | 15 |
%H |
Jam, format 24 jam (00-23) | 14 |
%I |
Jam, format 12 jam (01-12) | 02 |
%p |
AM atau PM | PM |
%M |
Menit (00-59) | 30 |
%S |
Detik (00-59) | 45 |
%w |
Hari dalam minggu (0-6, Minggu adalah 0) | 0 |
Aturan yang perlu diketahui
-
SQLite tidak punya kode untuk nama hari atau bulan. Kode seperti
%adan%Bmembuatstrftime()mengembalikan NULL. Sebagai gantinya, petakan%watau%mke sebuah nama denganCASE(lihat bagian hari dalam minggu di bawah). -
Hasilnya berupa teks. Membandingkan atau mengurutkan tanggal yang sudah diformat berarti membandingkan string, yang hanya sesuai dengan urutan tanggal jika tahun berada di depan:
-- Input: sales
-- id | sale_date | amount
-- ---+------------+-------
-- 1 | 2025-11-20 | 89.0
-- 2 | 2026-01-08 | 120.0
-- 3 | 2026-03-04 | 64.5
-- Wrong: '11/2025' > '02/2026' is true, because '1' > '0'
SELECT * FROM sales
WHERE strftime('%m/%Y', sale_date) > '02/2026';
-- Output:
-- id | sale_date | amount
-- ---+------------+-------
-- 1 | 2025-11-20 | 89.0
-- 3 | 2026-03-04 | 64.5
-- Right: put the year first
SELECT * FROM sales
WHERE strftime('%Y-%m', sale_date) > '2026-02';
-- Output:
-- id | sale_date | amount
-- ---+------------+-------
-- 3 | 2026-03-04 | 64.5
-
NULL masuk, NULL keluar.
strftime('%Y-%m-%d', NULL)mengembalikan NULL. Bungkus denganCOALESCE()untuk menampilkan hal lain, misalnya'No date'. -
Filter berdasarkan tanggal, format untuk tampilan.
WHERE order_date >= '2026-01-01' AND order_date < '2027-01-01'mengembalikan baris yang sama denganWHERE strftime('%Y', order_date) = '2026', tetapi hanya yang pertama yang bisa memakai index padaorder_date.
Sintaks alternatif
PostgreSQL, MySQL, dan SQL Server masing-masing punya fungsi dan kode sendiri:
-- PostgreSQL: TO_CHAR(value, pattern)
-- (FM stops it padding the day name to 9 characters)
SELECT TO_CHAR(TIMESTAMP '2026-01-15 09:42:00', 'FMDay, MM/DD/YYYY HH24:MI');
-- Output: Thursday, 01/15/2026 09:42
-- MySQL: DATE_FORMAT(value, pattern)
-- (%i is the minute; %M would be the month name)
SELECT DATE_FORMAT('2026-01-15 09:42:00', '%W, %m/%d/%Y %H:%i');
-- Output: Thursday, 01/15/2026 09:42
-- SQL Server: FORMAT(value, pattern)
-- (MM is the month, mm the minute)
SELECT FORMAT(CAST('2026-01-15 09:42:00' AS datetime2), 'dddd, MM/dd/yyyy HH:mm');
-- Output: Thursday, 01/15/2026 09:42
-- Older SQL Server code uses CONVERT with a style number (101 is mm/dd/yyyy)
SELECT CONVERT(VARCHAR(10), CAST('2026-01-15' AS date), 101);
-- Output: 01/15/2026
Kapan sebaiknya Anda memformat tanggal?
Format tanggal ketika tanggal perlu ditampilkan atau dikelompokkan sebagai teks. Sebagian besar penggunaan termasuk dalam salah satu dari empat kasus berikut.
Tampilkan tanggal dalam tata letak standar
Gunakan ISO 8601 (YYYY-MM-DD) untuk file dan API, MM/DD/YYYY untuk pembaca di AS, dan DD/MM/YYYY untuk sebagian besar Eropa. Format juga bisa membuang bagian waktu jika Anda hanya butuh tanggalnya.
Kelompokkan baris per bulan atau tahun
Ambil hanya bagian tanggal yang Anda inginkan, seperti %Y untuk tahun atau %Y-%m untuk bulan, lalu kelompokkan berdasarkan hasilnya untuk mendapatkan total tahunan atau bulanan.
Tulis tanggal yang mudah dibaca
Gabungkan kode dengan kata-kata untuk label, pengingat, dan email. “03/16 at 02:30 PM” lebih mudah dibaca daripada “2026-03-16 14:30:00”.
Bekerja dengan hari dalam minggu
%w memberikan hari dalam minggu sebagai angka dari 0 (Minggu) hingga 6 (Sabtu). Filter berdasarkan angka ini untuk menemukan hari kerja atau akhir pekan, atau petakan ke nama hari dengan CASE.
Contoh nyata format tanggal
Beri cap waktu ISO 8601 pada ekspor
Sebuah API membutuhkan timestamp seperti 2026-03-15T08:05:12Z. Waktu di audit_log disimpan dalam UTC, jadi letakkan T dan Z di sekitar kodenya (SQLite):
-- Input: audit_log
-- id | action | logged_at
-- ---+--------+--------------------
-- 1 | login | 2026-03-15 08:05:12
-- 2 | export | 2026-03-15 14:30:45
-- 3 | logout | 2026-03-15 17:58:03
SELECT
id,
action,
strftime('%Y-%m-%dT%H:%M:%SZ', logged_at) AS logged_at_iso
FROM audit_log;
-- Output:
-- id | action | logged_at_iso
-- ---+--------+---------------------
-- 1 | login | 2026-03-15T08:05:12Z
-- 2 | export | 2026-03-15T14:30:45Z
-- 3 | logout | 2026-03-15T17:58:03Z
Hitung pendaftaran per bulan
Kelompokkan pengguna berdasarkan bulan mereka bergabung (PostgreSQL). YYYY-MM menjaga bulan tetap dalam urutan tanggal:
-- Input: users
-- id | name | signup_date
-- ---+------------+------------
-- 1 | Ana Lima | 2026-01-08
-- 2 | Ben Okafor | 2026-01-27
-- 3 | Chloe Park | 2026-02-14
-- 4 | Dev Mehta | 2026-03-03
-- 5 | Elle Novak | 2026-03-30
SELECT
TO_CHAR(signup_date, 'YYYY-MM') AS month,
COUNT(*) AS signups
FROM users
GROUP BY TO_CHAR(signup_date, 'YYYY-MM')
ORDER BY month;
-- Output:
-- month | signups
-- --------+--------
-- 2026-01 | 2
-- 2026-02 | 1
-- 2026-03 | 2
Tulis konfirmasi pemesanan
Tuliskan nama hari dan bulan secara lengkap dalam pesan konfirmasi (SQL Server):
-- Input: bookings
-- guest_name | booking_time
-- ------------+--------------------
-- Priya Patel | 2026-03-16 14:30:00
-- Liam Murphy | 2026-03-18 09:15:00
SELECT
guest_name,
FORMAT(booking_time, 'dddd, MMMM d') + ' at ' + FORMAT(booking_time, 'h:mm tt') AS confirmation
FROM bookings;
-- Output:
-- guest_name | confirmation
-- ------------+-------------------------------
-- Priya Patel | Monday, March 16 at 2:30 PM
-- Liam Murphy | Wednesday, March 18 at 9:15 AM
Temukan hari tersibuk dalam seminggu
Hitung pesanan berdasarkan nama hari pesanan dibuat (MySQL):
-- Input: orders
-- order_id | order_date
-- ---------+--------------------
-- 1 | 2026-03-07 10:12:00
-- 2 | 2026-03-09 16:40:00
-- 3 | 2026-03-14 11:05:00
-- 4 | 2026-03-16 09:20:00
-- 5 | 2026-03-21 13:45:00
SELECT
DATE_FORMAT(order_date, '%W') AS weekday,
COUNT(*) AS order_count
FROM orders
GROUP BY weekday
ORDER BY order_count DESC;
-- Output:
-- weekday | order_count
-- ---------+------------
-- Saturday | 3
-- Monday | 2
Bacaan lanjutan tentang format tanggal
Di blog ini:
-
Panduan Format Tanggal di PostgreSQL: lebih banyak pola
TO_CHAR - Panduan SQL DATEDIFF: selisih waktu antara dua tanggal
-
Panduan SQL Insert Date: arah sebaliknya, dari teks ke tanggal dengan
STR_TO_DATE()dan sejenisnya - Cara Memilih Hari Kerja Saja di PostgreSQL: filter berdasarkan hari dalam minggu
- Panduan SQL GROUP BY: mengelompokkan baris menjadi total bulanan atau tahunan
- Panduan SQL CASE Statement: memetakan nomor hari ke nama hari
Dokumentasi resmi:
- PostgreSQL: Data Type Formatting Functions
- MySQL: DATE_FORMAT()
- SQLite: Date and Time Functions
- SQL Server: FORMAT dan CAST and CONVERT
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 pekerjaan database kembali menyenangkan."
"Saya sudah mencoba banyak GUI database, tetapi Beekeeper punya keseimbangan sempurna antara fitur dan kesederhanaan. Langsung berfungsi."