Fungsi Tanggal & Waktu: YEAR, DATE_FORMAT, DATEDIFF, DATE_ADD

Mengolah tanggal: mengambil tahun/bulan/hari, memformat tampilan dengan DATE_FORMAT, menghitung selisih hari, menambah interval, dan kebiasaan benar menyimpan tanggal.

Part 18 dari 38 ± 40 menit Gratis

Tanggal itu istimewa

Hampir semua bisnis bertanya soal waktu: "penjualan bulan ini", "pelanggan yang sudah 30 hari tidak belanja", "umur akun". MySQL punya banyak fungsi tanggal. Ingat formatnya: DATE = 'YYYY-MM-DD', DATETIME = 'YYYY-MM-DD HH:MM:SS'.

Waktu sekarang

SELECT NOW();        -- 2024-03-15 14:30:05  (tanggal + jam)
SELECT CURDATE();    -- 2024-03-15            (tanggal saja)
SELECT CURTIME();    -- 14:30:05              (jam saja)

Mengambil bagian tanggal

FungsiContoh dengan '2024-03-15'Hasil
YEAR(d)YEAR('2024-03-15')2024
MONTH(d)MONTH('2024-03-15')3
DAY(d)DAY('2024-03-15')15
DAYNAME(d)DAYNAME('2024-03-15')Friday
MONTHNAME(d)MONTHNAME('2024-03-15')March
QUARTER(d)QUARTER('2024-03-15')1

Memformat tampilan: DATE_FORMAT

SELECT DATE_FORMAT('2024-03-15', '%d-%m-%Y');       -- 15-03-2024
SELECT DATE_FORMAT('2024-03-15', '%d %M %Y');       -- 15 March 2024
SELECT DATE_FORMAT(NOW(), '%H:%i');                 -- 14:30
KodeArtiKodeArti
%Ytahun 4 digit%Hjam 00-23
%ytahun 2 digit%imenit
%mbulan 01-12%sdetik
%dtanggal 01-31%M / %bnama bulan / singkatannya
%W / %anama hari / singkatannya%jhari ke-n dalam tahun

Menghitung selisih dan menambah

SELECT DATEDIFF('2024-03-15', '2024-03-01');           -- 14 (hari)
SELECT TIMESTAMPDIFF(MONTH, '2023-01-15', '2024-03-15'); -- 14 (bulan)
SELECT DATE_ADD('2024-01-31', INTERVAL 1 MONTH);       -- 2024-02-29
SELECT DATE_SUB('2024-03-15', INTERVAL 7 DAY);         -- 2024-03-08

Unit interval: DAY, WEEK, MONTH, QUARTER, YEAR, HOUR, MINUTE, SECOND. DATEDIFF(a, b) = a dikurangi b, jadi tanggal yang lebih baru diletakkan di depan.

Menyaring berdasarkan tanggal

-- pesanan bulan Maret 2024
SELECT * FROM pesanan WHERE YEAR(tanggal) = 2024 AND MONTH(tanggal) = 3;

-- cara yang lebih cepat (bisa memakai index): rentang
SELECT * FROM pesanan WHERE tanggal >= '2024-03-01' AND tanggal < '2024-04-01';

-- pesanan 30 hari terakhir
SELECT * FROM pesanan WHERE tanggal >= DATE_SUB(CURDATE(), INTERVAL 30 DAY);

Jangan simpan tanggal sebagai teks seperti '15/03/2024' di kolom VARCHAR. Kamu kehilangan kemampuan mengurutkan, menghitung selisih, dan memakai semua fungsi di atas. Selalu pakai tipe DATE/DATETIME, dan format tampilannya di belakang dengan DATE_FORMAT.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X