date function mysql now date year month datediff | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: date function mysql now date year month datediff

Wednesday, April 8, 2026

date function mysql now date year month datediff

Beranda Tutorial MySQL Artikel 19
๐ŸŸก Menengah ๐Ÿ—„️ Database MySQL ⏱️ 12 Menit Baca ๐Ÿ“˜ Artikel 19 / 28

Fungsi Tanggal & Waktu MySQL:
NOW, DATE, YEAR, MONTH, DATEDIFF

Kuasai cara MySQL mengelola data tanggal & waktu — dari mencatat transaksi hingga menghitung umur pesanan secara otomatis.

๐Ÿงฉ
7
Fungsi SQL
๐Ÿ’ป
10
Contoh Query
๐Ÿ“–
12
Menit Baca

Pernah nggak kamu belanja online, terus di halaman pesanan muncul tulisan "Pesanan tiba dalam 3 hari lagi" atau "Bergabung sejak 2 tahun lalu"? Di balik angka-angka ajaib itu, ada satu hal yang bekerja keras di database — yaitu fungsi tanggal MySQL. Tanpa mereka, developer harus hitung manual satu per satu. Kebayang betapa ribetnya!

Di artikel ke-19 dari seri 28 artikel Belajar Query SQL MySQL ini, kita akan kupas tuntas bagaimana MySQL menangani data tanggal dan waktu. Kamu akan belajar fungsi-fungsi penting seperti NOW(), DATE(), YEAR(), MONTH(), dan DATEDIFF() — lengkap dengan studi kasus toko online yang seru dan relatable.

Setelah baca artikel ini, kamu bakal bisa: mengambil waktu saat ini secara otomatis, memfilter data berdasarkan bulan atau tahun tertentu, dan menghitung selisih antar tanggal layaknya seorang developer profesional. Siap? Let's go! ๐Ÿš€

๐Ÿ’ก

Fakta Menarik

MySQL memiliki lebih dari 30+ fungsi bawaan untuk mengelola tanggal dan waktu. Di balik fitur "tanggal kadaluarsa produk" atau "riwayat transaksi 30 hari terakhir" di e-commerce besar seperti Tokopedia atau Shopee, fungsi-fungsi inilah yang menjadi tulang punggungnya. Menguasainya = kamu satu langkah lebih dekat jadi backend developer sungguhan!

๐Ÿ“ Sintaks Lengkap Fungsi Tanggal MySQL

Sebelum masuk ke contoh, kenali dulu sintaks lengkapnya biar nggak salah tulis:

-- 1. NOW() — Mengambil tanggal dan waktu saat ini
SELECT NOW();
-- Output: 2025-08-15 10:30:45

-- 2. DATE() — Mengambil bagian tanggal saja dari DATETIME
SELECT DATE(kolom_datetime);
-- Output: 2025-08-15

-- 3. YEAR() — Mengambil tahun dari sebuah tanggal
SELECT YEAR(kolom_tanggal);
-- Output: 2025

-- 4. MONTH() — Mengambil bulan (angka 1–12)
SELECT MONTH(kolom_tanggal);
-- Output: 8

-- 5. DAY() — Mengambil hari (tanggal angka)
SELECT DAY(kolom_tanggal);
-- Output: 15

-- 6. DATEDIFF() — Selisih hari antara dua tanggal
SELECT DATEDIFF(tanggal_akhir, tanggal_awal);
-- Output: angka positif/negatif (selisih hari)

-- 7. DATE_FORMAT() — Format tampilan tanggal
SELECT DATE_FORMAT(kolom_tanggal, '%d %M %Y');
-- Output: 15 August 2025

1. Fungsi NOW() dan DATE() — "Jam Tangan" Database

Bayangkan database seperti seorang kasir toko. Setiap kali ada transaksi masuk, si kasir langsung mencatat: "Pesanan ini masuk jam berapa, hari ini tanggal berapa." Nah, fungsi NOW() adalah jam tangan si kasir — dia tahu waktu terkini secara real-time.

Sementara DATE() berfungsi untuk "mengupas" bagian waktu dari kolom DATETIME, menyisakan tanggalnya saja. Ini berguna saat kamu cuma butuh info hari transaksi, bukan jam persisnya.

SQL Query
-- Mencatat pesanan baru dengan timestamp otomatis
INSERT INTO pesanan (id_pelanggan, total_harga, tanggal_pesan)
VALUES (101, 250000, NOW());

-- Ambil semua pesanan hari ini saja (tanpa jam)
SELECT
  id_pesanan,
  id_pelanggan,
  DATE(tanggal_pesan) AS tgl_transaksi,
  total_harga
FROM pesanan
WHERE DATE(tanggal_pesan) = DATE(NOW());

๐Ÿ“Š Hasil Query:

id_pesanan id_pelanggan tgl_transaksi total_harga
P-0091 101 2025-08-15 250.000
P-0092 104 2025-08-15 185.000
P-0093 107 2025-08-15 620.000

✅ Tip Praktis

Saat membuat tabel pesanan di toko online, biasakan set kolom tanggal dengan tipe DATETIME dan nilai default CURRENT_TIMESTAMP. Dengan begitu, MySQL otomatis mengisi waktu tanpa kamu perlu tulis NOW() setiap insert!

2. Fungsi YEAR(), MONTH(), DAY() — Bedah Tanggal Lapis demi Lapis

Kalau DATE() itu seperti mengambil seluruh amplop tanggal, maka YEAR(), MONTH(), dan DAY() adalah pinset yang membedah isi amplop itu satu per satu. Ini adalah senjata utama saat kamu perlu filter data berdasarkan periode — misalnya laporan penjualan bulan Agustus saja, atau rekap tahunan 2024.

Dalam konteks toko online, fungsi tanggal MySQL ini sangat sering dipakai untuk membuat laporan penjualan bulanan atau mengetahui produk paling laris di bulan tertentu.

SQL Query
-- Total penjualan per bulan di tahun 2025
SELECT
  YEAR(tanggal_pesan)  AS tahun,
  MONTH(tanggal_pesan) AS bulan,
  COUNT(*)            AS jumlah_pesanan,
  SUM(total_harga)    AS total_pendapatan
FROM pesanan
WHERE YEAR(tanggal_pesan) = 2025
GROUP BY YEAR(tanggal_pesan), MONTH(tanggal_pesan)
ORDER BY bulan ASC;

๐Ÿ“Š Hasil Query:

tahun bulan jumlah_pesanan total_pendapatan
2025 6 142 28.450.000
2025 7 187 35.200.000
2025 8 214 41.750.000

⚠️ Peringatan

Menggunakan fungsi seperti YEAR(tanggal_pesan) dalam klausa WHERE bisa memperlambat query jika tabelnya besar, karena MySQL tidak bisa memakai index kolom tersebut secara optimal. Alternatifnya: gunakan WHERE tanggal_pesan BETWEEN '2025-01-01' AND '2025-12-31' untuk performa lebih baik di data besar.

3. Fungsi DATEDIFF() & DATE_FORMAT() — Hitung Jarak dan Tampilkan Cantik

Kalau kamu pernah lihat fitur "Pengiriman sudah 5 hari, segera konfirmasi!" di marketplace, di sanalah DATEDIFF() beraksi. Fungsi ini menghitung selisih hari antara dua tanggal. Simpel, tapi super powerful!

Sementara DATE_FORMAT() adalah "stylist" tanggal — dia yang memastikan tampilan tanggal di aplikasi kamu terlihat rapi dan sesuai kebutuhan, misalnya dari format 2025-08-15 jadi 15 Agustus 2025.

SQL Query
-- Hitung umur pesanan (sudah berapa hari) + format tanggal cantik
SELECT
  id_pesanan,
  DATE_FORMAT(tanggal_pesan, '%d %M %Y') AS tanggal_tampil,
  status_pesanan,
  DATEDIFF(NOW(), tanggal_pesan) AS hari_sejak_pesan
FROM pesanan
WHERE
  status_pesanan = 'dikirim'
  AND DATEDIFF(NOW(), tanggal_pesan) > 3
ORDER BY hari_sejak_pesan DESC;

๐Ÿ“Š Hasil Query:

id_pesanan tanggal_tampil status_pesanan hari_sejak_pesan
P-0078 08 August 2025 dikirim 7
P-0082 10 August 2025 dikirim 5
P-0086 11 August 2025 dikirim 4

✅ Tip Praktis

Format paling sering dipakai di DATE_FORMAT(): %d (hari 2 digit), %m (bulan angka), %M (nama bulan Inggris), %Y (tahun 4 digit), %H:%i (jam:menit). Kombinasikan sesuai kebutuhan aplikasimu!

4. Bonus: CURDATE() dan DATE_ADD() — Manipulasi Tanggal Secara Dinamis

Dua fungsi bonus ini sering jadi pelengkap combo yang lengkap. CURDATE() mirip NOW() tapi mengembalikan tanggal hari ini saja (tanpa jam). Sedangkan DATE_ADD() bisa "menambahkan" hari, bulan, atau tahun ke sebuah tanggal — berguna misalnya untuk menghitung tanggal kadaluarsa garansi produk atau batas masa promo.

SQL Query
-- Hitung estimasi tiba (3 hari dari tanggal pesan)
-- dan cek apakah garansi 1 tahun masih aktif
SELECT
  id_pesanan,
  tanggal_pesan,
  DATE_ADD(tanggal_pesan, INTERVAL 3 DAY)  AS estimasi_tiba,
  DATE_ADD(tanggal_pesan, INTERVAL 1 YEAR) AS garansi_hingga,
  CASE
    WHEN CURDATE() <= DATE_ADD(tanggal_pesan, INTERVAL 1 YEAR)
    THEN 'Aktif'
    ELSE 'Kedaluwarsa'
  END AS status_garansi
FROM pesanan
LIMIT 3;

๐Ÿ“Š Hasil Query:

id_pesanan tanggal_pesan estimasi_tiba garansi_hingga status_garansi
P-0078 2025-08-08 2025-08-11 2026-08-08 Aktif
P-0042 2024-05-20 2024-05-23 2025-05-20 Kedaluwarsa
P-0055 2025-03-10 2025-03-13 2026-03-10 Aktif

๐Ÿงช Langkah Praktikum — Coba Sendiri dari Nol!

1

Buat Database dan Tabel Latihan

Buka MySQL Workbench atau terminal MySQL kamu, lalu jalankan script ini untuk membuat environment latihan.

CREATE DATABASE db_toko;
USE db_toko;

CREATE TABLE pesanan (
  id_pesanan    VARCHAR(10)   PRIMARY KEY,
  id_pelanggan  INT,
  total_harga   DECIMAL(12,2),
  status_pesanan VARCHAR(20),
  tanggal_pesan DATETIME DEFAULT CURRENT_TIMESTAMP
);
2

Insert Data Sample

Isi tabel dengan beberapa baris data dengan tanggal yang bervariasi agar fungsi tanggal MySQL kelihatan hasilnya.

INSERT INTO pesanan VALUES
  ('P-0078', 101, 250000, 'dikirim',  '2025-08-08 09:15:00'),
  ('P-0082', 104, 185000, 'dikirim',  '2025-08-10 14:22:00'),
  ('P-0086', 107, 620000, 'dikirim',  '2025-08-11 08:00:00'),
  ('P-0091', 101, 250000, 'selesai', NOW()),
  ('P-0042', 102, 450000, 'selesai', '2024-05-20 11:00:00');
3

Eksplorasi Setiap Fungsi

Jalankan query berikut satu per satu dan perhatikan outputnya. Ini cara paling efektif untuk memahami perbedaan tiap fungsi.

SELECT
  tanggal_pesan,
  NOW()                   AS waktu_sekarang,
  DATE(tanggal_pesan)     AS hanya_tanggal,
  YEAR(tanggal_pesan)     AS tahun,
  MONTH(tanggal_pesan)    AS bulan,
  DAY(tanggal_pesan)      AS hari,
  DATEDIFF(NOW(), tanggal_pesan) AS umur_hari
FROM pesanan;
4

Tantangan Mini — Coba Sendiri!

Coba buat query: "Tampilkan semua pesanan yang dilakukan dalam 7 hari terakhir, dengan format tanggal dd/mm/yyyy, diurutkan dari yang terbaru." Gunakan kombinasi DATEDIFF, DATE_FORMAT, dan ORDER BY!

๐Ÿ“‹ Tabel Ringkasan Fungsi Tanggal MySQL

Fungsi Kegunaan Contoh Input Output
NOW() Waktu saat ini (datetime) 2025-08-15 10:30:45
CURDATE() Tanggal hari ini saja 2025-08-15
DATE() Ambil bagian tanggal dari DATETIME 2025-08-15 10:30:45 2025-08-15
YEAR() Ambil tahun 2025-08-15 2025
MONTH() Ambil bulan (1–12) 2025-08-15 8
DAY() Ambil tanggal (1–31) 2025-08-15 15
DATEDIFF() Selisih hari antara 2 tanggal NOW(), '2025-08-01' 14
DATE_ADD() Tambah hari/bulan/tahun ke tanggal '2025-08-15', INTERVAL 3 DAY 2025-08-18
DATE_FORMAT() Format tampilan tanggal '2025-08-15', '%d %M %Y' 15 August 2025
๐ŸŽฏ

Tips dari Lapangan #1

Selalu simpan tanggal dengan tipe DATETIME (bukan VARCHAR!) di tabelmu. Banyak pemula yang menyimpan tanggal sebagai string seperti '15-08-2025' dan akhirnya tidak bisa menggunakan fungsi tanggal MySQL sama sekali. Tipe data yang benar = query yang benar!

๐Ÿš€

Tips dari Lapangan #2

Untuk laporan bisnis profesional, kombinasikan YEAR() + MONTH() + SUM() + GROUP BY. Hasilnya bisa langsung jadi data mentah untuk grafik penjualan bulanan di dashboard admin — persis seperti yang dipakai tim data analyst di perusahaan e-commerce sungguhan!

๐ŸŽ“ Kesimpulan — Kamu Sudah Menguasai Waktu!

Setelah mempelajari fungsi tanggal MySQL di artikel ke-19 ini, kamu sudah punya bekal yang cukup solid. Berikut poin-poin penting yang sudah kita bahas:

  • NOW() dan CURDATE() — mengambil waktu/tanggal saat ini secara otomatis
  • DATE() — mengupas bagian tanggal dari kolom DATETIME
  • YEAR(), MONTH(), DAY() — membedah komponen tanggal untuk filter dan GROUP BY
  • DATEDIFF() — menghitung selisih hari antara dua tanggal
  • DATE_ADD() — menambahkan interval waktu ke sebuah tanggal
  • DATE_FORMAT() — memformat tampilan tanggal sesuai kebutuhan aplikasi

Ingat — developer yang baik bukan cuma yang bisa nulis query, tapi yang tahu fungsi yang tepat untuk masalah yang tepat. Fungsi tanggal MySQL adalah salah satu skill yang akan selalu kamu pakai, dari project kuliah sampai kerja di startup. Keep practicing! ๐Ÿ’ช

Artikel ini bermanfaat? Yuk bantu sebar! ๐Ÿ™Œ

Share ke teman sekelas, komen pengalaman kamu mencoba query-nya, atau bookmark seri ini biar nggak ketinggalan artikel berikutnya. Kalau ada pertanyaan, langsung tulis di kolom komentar ya!


๐Ÿ“š
Navigasi Seri Artikel · MySQL Mastery
← Artikel Sebelumnya

Artikel 18/28: Fungsi String — CONCAT, LENGTH, dan Lainnya

Memanipulasi teks langsung di query menggunakan CONCAT, LENGTH, UPPER, LOWER, SUBSTRING, TRIM.

Artikel Selanjutnya →

Artikel 20/28: Menggabungkan Tabel — INNER JOIN

Kuasai dasar JOIN untuk menggabungkan data dari dua tabel berbeda — skill wajib developer SQL.

Artikel 19 dari 28 dalam seri ini 68% selesai

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux