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: CSS Trunk Text

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: CSS Trunk Text
$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

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 ...


Membuat input type untuk email di HTML

Pada umumnya kita sebagai web developer membuat input type berupa text atau password dengan kode seperti berikut: Untuk text: <input type="text" name="username" size="25" maxsize="15"> Untuk password: <input type="password" name="password" ...


Mengenal Lebih Dekat Pemrograman Web Dengan PHP

Kepopuleran website kian hari memang kian meningkat. Untuk membangun sebuah website sendiri tentu saja dibutuhkan bahasa pemrograman. salah satunya PHP. Walaupun sebagian pemula cukup asing namun ternyata, PHP ini sudah cukup populer digunakan dalam ...


Proses Pengerjaan

Web Design - Photography (foto prewedding casual, foto prewedding unik, photo pre wedding) - Videography

Lokasi di Surabaya dan 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