Penjelasan sederhana
EXTRACT mengambil satu bagian dari tanggal: tahunnya (YEAR), bulannya (MONTH), harinya (DAY), atau jamnya (HOUR). Mirip rumus YEAR, MONTH, dan DAY di Excel.
Fungsi ini hampir selalu muncul di laporan berkala, karena kamu bisa mengelompokkan transaksi per bulan atau per tahun.
Sintaks
EXTRACT(bagian FROM tanggal)
| Bagian | Keterangan |
|---|---|
bagian | YEAR, MONTH, DAY, HOUR, MINUTE, QUARTER, dan lain-lain. |
tanggal | Kolom bertipe DATE atau TIMESTAMP. |
Tanda [kurung siku] berarti bagian opsional. Kata kunci SQL tidak membedakan huruf besar-kecil, tapi menulisnya dengan huruf besar membuat query lebih mudah dibaca.
Contoh EXTRACT
Data contoh: penjualan
Tabel penjualan
| id | tanggal | karyawan_id | produk | kategori | qty | harga |
|---|---|---|---|---|---|---|
| 1 | 2026-01-05 | 4 | Laptop | Elektronik | 2 | 8500000 |
| 2 | 2026-01-12 | 6 | Printer | Elektronik | 1 | 2300000 |
| 3 | 2026-01-20 | 4 | Kursi Kantor | Furnitur | 5 | 1200000 |
| 4 | 2026-02-03 | 6 | Laptop | Elektronik | 1 | 8500000 |
| 5 | 2026-02-14 | 4 | Meja Kerja | Furnitur | 3 | 1750000 |
| 6 | 2026-02-25 | 5 | Kertas A4 | ATK | 20 | 55000 |
| 7 | 2026-03-02 | 6 | Kursi Kantor | Furnitur | 4 | 1200000 |
| 8 | 2026-03-10 | 4 | Printer | Elektronik | 2 | 2300000 |
| 9 | 2026-03-18 | 5 | Kertas A4 | ATK | 30 | 55000 |
| 10 | 2026-03-27 | 6 | Monitor | Elektronik | 3 | 1900000 |
SELECT EXTRACT(MONTH FROM tanggal) AS bulan,
SUM(qty * harga) AS omzet
FROM penjualan
GROUP BY EXTRACT(MONTH FROM tanggal)
ORDER BY bulan;
Hasil 3 baris
| bulan | omzet |
|---|---|
| 1 | 25300000 |
| 2 | 14850000 |
| 3 | 16750000 |
Omzet per bulan. Pola ini dipakai di hampir semua laporan bulanan.
Cara kerjanya, langkah demi langkah
FROM penjualan: 10 transaksi diambil.EXTRACT(MONTH FROM tanggal): dari setiap tanggal diambil angka bulannya. "2026-01-05" menjadi 1.GROUP BYbulan: transaksi dikelompokkan menjadi 3, yaitu bulan 1, 2, dan 3.SUM(qty * harga)per bulan: Januari 25.300.000, Februari 14.850.000, Maret 16.750.000.
Dipakai untuk apa di kantor?
- Laporan omzet per bulan atau per tahun.
- Melihat jam ramai transaksi dengan
EXTRACT(HOUR FROM waktu).
Kesalahan yang sering terjadi
- Mengelompokkan hanya per bulan untuk data lebih dari setahun. Januari 2025 dan Januari 2026 tergabung jadi satu. Kelompokkan per tahun dan bulan.
- Lupa bahwa nama fungsinya berbeda di tiap database. MySQL juga punya
MONTH(), SQL Server memakaiDATEPART().
CASE WHEN