MySQL menyediakan berbagai fungsi untuk manipulasi tanggal dan waktu yang sangat berguna dalam pengolahan data.
-- 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 30 hari
SELECT DATE_SUB(CURDATE(), INTERVAL 30 DAY) AS hasil;
-- Mengurangi 6 jam
SELECT DATE_SUB(NOW(), INTERVAL 6 HOUR) AS hasil; -- 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; Berikut contoh penggunaan fungsi tanggal dalam skenario nyata:
SELECT name,
TIMESTAMPDIFF(YEAR, birth_date, CURDATE()) AS umur_tahun,
TIMESTAMPDIFF(MONTH, birth_date, CURDATE()) % 12 AS umur_bulan
FROM users;
SELECT *
FROM orders
WHERE MONTH(order_date) = MONTH(CURDATE())
AND YEAR(order_date) = YEAR(CURDATE());
-- Awal bulan ini
SELECT DATE_FORMAT(CURDATE(), '%Y-%m-01') AS awal_bulan;
-- Akhir bulan ini
SELECT LAST_DAY(CURDATE()) AS akhir_bulan;
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;