Database

Menambah atau Mengurangi Tanggal di MySQL

Manipulasi tanggal adalah operasi yang sangat umum dalam database. MySQL menyediakan berbagai fungsi untuk menambah, mengurangi, dan memanipulasi nilai tanggal. Tutorial ini akan membahas semua fungsi terkait tanggal di MySQL.

\n\n

Fungsi DATE_ADD()

\n

Fungsi DATE_ADD digunakan untuk menambah interval tertentu pada tanggal:

\n
-- Tambah 7 hari\nSELECT DATE_ADD('2025-01-01', INTERVAL 7 DAY);\n\n-- Tambah 3 bulan\nSELECT DATE_ADD('2025-01-01', INTERVAL 3 MONTH);\n\n-- Tambah 1 tahun\nSELECT DATE_ADD('2025-01-01', INTERVAL 1 YEAR);\n\n-- Tambah 2 jam 30 menit\nSELECT DATE_ADD('2025-01-01 10:00:00', INTERVAL '2:30' HOUR_MINUTE);\n\n-- Tambah 15 menit\nSELECT DATE_ADD(NOW(), INTERVAL 15 MINUTE);
\n\n

Fungsi DATE_SUB()

\n

Fungsi DATE_SUB digunakan untuk mengurangi interval dari tanggal:

\n
-- Kurangi 7 hari\nSELECT DATE_SUB('2025-01-01', INTERVAL 7 DAY);\n\n-- Kurangi 3 bulan\nSELECT DATE_SUB(CURDATE(), INTERVAL 3 MONTH);\n\n-- Kurangi 1 tahun\nSELECT DATE_SUB(CURDATE(), INTERVAL 1 YEAR);\n\n-- Kurangi 30 hari dari sekarang\nSELECT DATE_SUB(NOW(), INTERVAL 30 DAY);
\n\n

Fungsi DATEDIFF()

\n

Fungsi DATEDIFF menghitung selisih hari antara dua tanggal:

\n
-- Selisih hari antara dua tanggal\nSELECT DATEDIFF('2025-12-31', '2025-01-01') AS selisih_hari;\n-- Hasil: 364\n\n-- Selisih dari tanggal sekarang\nSELECT DATEDIFF(CURDATE(), '2025-01-01') AS hari_sejak_awal_tahun;\n\n-- Filter data berdasarkan rentang tanggal\nSELECT * FROM orders \nWHERE DATEDIFF(CURDATE(), order_date) <= 30;
\n\n

Fungsi TIMESTAMPDIFF()

\n

Untuk menghitung selisih dalam satuan yang lebih spesifik:

\n
-- Selisih dalam bulan\nSELECT TIMESTAMPDIFF(MONTH, '2025-01-01', '2025-06-01');\n-- Hasil: 5\n\n-- Selisih dalam tahun\nSELECT TIMESTAMPDIFF(YEAR, '2020-01-01', CURDATE());\n\n-- Selisih dalam jam\nSELECT TIMESTAMPDIFF(HOUR, '2025-01-01 08:00:00', '2025-01-01 17:00:00');\n-- Hasil: 9
\n\n

Operasi Langsung dengan Operator + dan -

\n

MySQL juga mendukung operasi tanggal langsung:

\n
-- Tambah hari\nSELECT CURDATE() + INTERVAL 30 DAY;\n\n-- Kurangi bulan\nSELECT CURDATE() - INTERVAL 6 MONTH;\n\n-- Tambah tahun\nSELECT '2025-01-01' + INTERVAL 1 YEAR;
\n\n

Contoh Praktis

\n

1. Filter data 7 hari terakhir:

\n
SELECT * FROM orders \nWHERE order_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY);
\n\n

2. Hitung umur dari tanggal lahir:

\n
SELECT name, \n    TIMESTAMPDIFF(YEAR, birth_date, CURDATE()) AS umur\nFROM users;
\n\n

3. Update tanggal expired:

\n
UPDATE subscriptions \nSET expired_date = DATE_ADD(CURDATE(), INTERVAL 30 DAY)\nWHERE user_id = 1;
\n\n

4. Group by bulan:

\n
SELECT DATE_FORMAT(order_date, '%Y-%m') AS bulan, \n    COUNT(*) AS total \nFROM orders \nGROUP BY DATE_FORMAT(order_date, '%Y-%m')\nORDER BY bulan;
\n\n

Interval yang Didukung

\n
    \n
  • SECOND, MINUTE, HOUR
  • \n
  • DAY, WEEK, MONTH, QUARTER, YEAR
  • \n
  • HOUR_MINUTE, YEAR_MONTH
  • \n
  • DAY_HOUR, DAY_MINUTE, DAY_SECOND
  • \n
\n\n

Kesimpulan

\n

MySQL menyediakan fungsi yang sangat lengkap untuk manipulasi tanggal. DATE_ADD dan DATE_SUB untuk menambah/mengurangi, DATEDIFF dan TIMESTAMPDIFF untuk menghitung selisih. Pahami fungsi-fungsi ini untuk mempermudah query yang berkaitan dengan tanggal.


You may also like


0 Comments


Leave a Reply

Scroll to Top