Mencari data ulang tahun dengan PHP dan MySQL

php mysql - data ulang tahun - cari ulang tahun

penggunaan php dan mysql untuk mencari data ulang tahun di dalam database



Mencari data ulang tahun dengan PHP dan MySQL

Terkadang kita mengalami kesulitan untuk mencari siapa saja yang berulang tahun mulai dari tanggal X sampai tanggal Y jika data tersimpan di dalam database MySQL. Hal ini disebabkan karena saat disimpan di dalam database, format tanggal lahir adalah Y-m-d (2000-12-21).

Jika mencari siapa yang berulang tahun pada 01 Januari 2021 sampai 14 Januari 2021, caranya masih mudah, karena tahunnya sama. Tetapi akan jadi masalah jika pencarian lintas tahun, misalnya: 24 Desember 2020 sampai 05 Januari 2021.

Baca Juga: Penting! Hal Ini Harus Dipahami Saat Menggunakan Javascript

Untuk memudahkan, kita berikan contoh data di kolom: tgl_lahir, yaitu

  • Jaka: 1997-02-01
  • Mega: 2001-01-14
  • Satria: 2000-12-21

Kita asumsikan kita akan mencari data siapa yang berulang tahun antara 10 Januari 2021 sampai 02 Februari 2021. Karena tahunnya sama, maka pencarian bisa lebih mudah, yaitu dengan mencari range antara tanggal dan bulan dari kolom tgl_lahir.

Syntax di MySQL adalah

<?php
$result=doQuery("select * from [table] where (DATE_FORMAT(tgl_lahir, '%m-%d') 
BETWEEN DATE_FORMAT(?, '%m-%d') AND 
DATE_FORMAT(?, '%m-%d'))
order by RIGHT(tgl_lahir,5) ASC", Array('2021-01-10','2021-02-02'));
?>

doQuery adalah sql query sesuai dengan class mysql yang kita gunakan.
BETWEEN adalah function dari MySQL untuk mencari data antara X dan Y.
order by RIGHT(tgl_lahir,5) ASC artinya mengurutkan hasil dari RIGHT(tgl_lahir,5), di mana RIGHT(tgl_lahir,5) adalah function MySQL untuk mengambil 5 karakter dari ujung paling kanan. Jika valuenya: 2001-01-14, maka RIGHT(tgl_lahir,5)-nya adalah 01-14.

Output dari hasil di atas adalah:

  • Mega: 2001-01-14
  • Jaka: 1997-02-01

Nah, query akan berbeda jika data yang dicari lintas tahun, misalnya mencari data siapa yang ulang tahun antara tanggal 20 Desember 2020 sampai 15 Januari 2021. Cara di atas tidak bisa digunakan lagi.
Berikut caranya:

Baca Juga: Penting! Hal Ini Harus Dipahami Saat Menggunakan Javascript
$result=doQuery("select *, if(MONTH(tgl_lahir)>MONTH('2021-01-15'), MONTH(tgl_lahir), MONTH(tgl_lahir)+12) ord,
if(DAY(tgl_lahir)>DAY('2021-01-15"'), DAY(tgl_lahir), DAY(tgl_lahir)+31) ord2
where
	( (DATE_FORMAT(tgl_lahir, '%m-%d') 
	BETWEEN DATE_FORMAT(?, '%m-%d') AND 
	DATE_FORMAT(?, '%m-%d'))
OR
	(DATE_FORMAT(tgl_lahir, '%m-%d') 
	BETWEEN DATE_FORMAT(?, '%m-%d') AND 
	DATE_FORMAT(?, '%m-%d')) ) order by ord,ord2",
Array('2020-12-20','2020-12-31','2021-01-01','2021-01-15'));

Di sini ada cukup banyak variable yang digunakan.

if(MONTH(tgl_lahir)>MONTH('2021-01-15'), MONTH(tgl_lahir), MONTH(tgl_lahir)+12) artinya jika bulan lahir > dari 01 (Januari), maka akan return bulan lahir normal. Jika tidak, akan di return dengan ditambahkan 12.
Hal yang sama juga berlaku untuk if(DAY(tgl_lahir)>DAY('2021-01-15"'), DAY(tgl_lahir), DAY(tgl_lahir)+31) ord2

Hal ini dilakukan untuk seolah-olah membuat tanggal akhir lebih besar dari tanggal awal, supaya kita bisa menggunakan function BETWEEN dari Mysql.

Hasil dari query di atas adalah:

  • Satria: 2000-12-21
  • Mega: 2001-01-14


Artikel Lainnya

Web Design Surabaya - Web Design Murah - Jasa SEO terbaik

Kiat Membuat Website Berbasis JavaScript Yang SEO Friendly

Kini banyak web developer yang menggunakan JavaScript sebagai bahasa pemrograman website mereka. Jenis bahasa pemrograman ini dinilai dapat menciptakan website yang lebih interaktif, responsif dan dinamis. Hal tersebut sangat penting untuk meningkatk ...


Membuat input type text hanya boleh berisi angka dengan HTML5

Bagaimana membuat input text supaya hanya boleh berisi angka saja? Tidak perlu menggunakan javascript, karena dengan menggunakan HTML5 kita bisa membuatnya dengan mudah. Anggap saja kita ingin membuat kolom untuk menginputkan temperatur badan seseor ...


Mendapatkan total dan total sebelumnya

Sebagai penyedia Jasa Web Design Surabaya, kami terkadang menemukan permintaan customer untuk menampilkan total penjualan hari ini dan tanggal sebelumnya untuk menghitung prosentase kenaikan atau penurunannya. Nah umumnya kita mencari cara mudah yai ...


Kami membuat RESPONSIVE WEB

Responsive web adalah kode program web sehingga website tetap terbaca dengan mudah di semua perangkat baik komputer, smartphone, maupun tablet, dan sangat cocok dengan syarat dari mesin pencari google

web design di bali

Foto Buat Nikah

Desain Grafis

Kontak

08113638531 / 08113865464

info@tatamedia.com

Desainer Website di Surabaya

Web Design di Bali

Kantor

Tatamedia Solusindo Surabaya

Dekkophotography Bali

Video Prewedding

Web Design

Support

Kirim permintaan anda ke

info@tatamedia.com