Cara menghitung Selisih Bulan dan Tahun MySQL / MariaDB

Untuk menghitung selisih bulan dan tahun cukup menggunakan fungsi TIMESTAMDIFF. Fungsi ini seperti datediff, namun memiliki format atau unit yang bisa kita sesuaikan.
12219  
       

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.

2 Responses to “Cara menghitung Selisih Bulan dan Tahun MySQL / MariaDB”

  1. Irfan Fadhlurrohman

    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 ?

Leave a Reply to Irfan Fadhlurrohman

Klik di sini untuk membatalkan balasan.

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>