Database 07 Oct 2018 471 views 0 komentar

Menambah atau Mengurangi Tanggal di MySQL

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;
Tags Artikel: #MySQL #Date

Bagikan artikel ini:

Komentar (0)

Belum ada komentar. Jadilah yang pertama memberikan tanggapan!

Tinggalkan Komentar