Untuk menghitung selisih bulan dan tahun cukup menggunakan fungsi TIMESTAMDIFF. Fungsi ini seperti datediff, namun memiliki format atau unit yang bisa kita sesuaikan.
Sementara fungsi STR_TO_DATE ini hanyalah untuk memberikan tampilan yang cukup bagus.
Berikut ini adalah contohnya.
SELECT id, fname, lname, STR_TO_DATE(tanggal_masuk, '%Y-%m-%d') tanggal_masuk, STR_TO_DATE(NOW(), '%Y-%m-%d') AS 'tanggal_sekarang', TIMESTAMPDIFF(YEAR, tanggal_masuk, NOW()) AS selisih_tahun, TIMESTAMPDIFF(MONTH, tanggal_masuk, NOW()) AS selisih_bulan FROM b_users
Cara Menghitung Ulang Tahun yang akan datang
Untuk membuat daftar siapa saja yang akan ulang tahun untuk 21 hari kedepan dengan menggunakan SQL sebetulnya sangat mudah. Mari kita asumsikan table bernama b_users memiliki field id, nama, dan ada field tanggal lahir yang bernama bdate. Ketika kita akan melakukan perhitungan, kita cukup menyesuaikan kolom bdate nya saja.
Berikut ini adalah SQL nya.
SELECT id, CONCAT(fname," ",lname) nama, TIMESTAMPDIFF(DAY, bdate, NOW()) AS selisih_hari FROM b_users WHERE utype = "frontend" AND DATE_ADD(bdate, INTERVAL YEAR(CURDATE())-YEAR(bdate) + IF(DAYOFYEAR(CURDATE()) > DAYOFYEAR(bdate),1,0) YEAR) BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 21 DAY)
Demikian. Semoga membantu.
mau nanya fungsi query ini STR_TO_DATE(tanggal_masuk, ‘%Y-%m-%d’) tanggal_masuk,
STR_TO_DATE(NOW(), ‘%Y-%m-%d’) AS ‘tanggal_sekarang’, untuk apa ?
Untuk pengaliasan hasil query, sehingga bisa memudahkan nanti dalam penyajian data. Kalaupun ga dilakukan pun tidak apa-apa.