Database

Menambah atau Mengurangi Tanggal di MySQL

Operasi Tanggal di MySQL

MySQL menyediakan berbagai fungsi untuk manipulasi tanggal dan waktu yang sangat berguna dalam pengolahan data.

Menambah Tanggal

-- Menambah 7 hari
SELECT DATE_ADD('2024-01-01', INTERVAL 7 DAY) AS hasil;
-- Result: 2024-01-08
-- Menambah 3 bulan
SELECT DATE_ADD('2024-01-01', INTERVAL 3 MONTH) AS hasil;
-- Result: 2024-04-01
-- Menambah 1 tahun
SELECT DATE_ADD('2024-01-01', INTERVAL 1 YEAR) AS hasil;
-- Result: 2025-01-01

Mengurangi Tanggal

-- Mengurangi 30 hari
SELECT DATE_SUB(CURDATE(), INTERVAL 30 DAY) AS hasil;
-- Mengurangi 6 jam
SELECT DATE_SUB(NOW(), INTERVAL 6 HOUR) AS hasil;

Fungsi Tanggal Lainnya

-- Selisih dua tanggal (dalam hari)
SELECT DATEDIFF('2024-12-31', '2024-01-01') AS selisih_hari;
-- Mendapatkan komponen tanggal
SELECT YEAR(NOW()) AS tahun, MONTH(NOW()) AS bulan, DAY(NOW()) AS hari;

Tips Penggunaan

  • Gunakan format ISO (YYYY-MM-DD) untuk konsistensi
  • Perhatikan timezone saat bekerja dengan data lintas zona waktu
  • Gunakan INDEX pada kolom tanggal untuk query yang sering diakses

Contoh Kasus Nyata

Berikut contoh penggunaan fungsi tanggal dalam skenario nyata:

Menghitung Umur

SELECT name, 
  TIMESTAMPDIFF(YEAR, birth_date, CURDATE()) AS umur_tahun,
  TIMESTAMPDIFF(MONTH, birth_date, CURDATE()) % 12 AS umur_bulan
FROM users;

Filter Data per Bulan

SELECT *
FROM orders
WHERE MONTH(order_date) = MONTH(CURDATE())
AND YEAR(order_date) = YEAR(CURDATE());

Mendapatkan Tanggal Awal dan Akhir Bulan

-- Awal bulan ini
SELECT DATE_FORMAT(CURDATE(), '%Y-%m-01') AS awal_bulan;
-- Akhir bulan ini
SELECT LAST_DAY(CURDATE()) AS akhir_bulan;

Group by Periode

SELECT DATE_FORMAT(order_date, '%Y-%m') AS bulan, 
  COUNT(*) AS jumlah_order,
  SUM(total) AS pendapatan
FROM orders
GROUP BY DATE_FORMAT(order_date, '%Y-%m')
ORDER BY bulan DESC;

You may also like


0 Comments


Leave a Reply

Comments with links or spam keywords will be rejected.
Scroll to Top