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: Membuat input type untuk email di HTML

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: Membuat input type untuk email di HTML
$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

CSS Trunk Text

Dalam pengembangan web design, kita seringkali menampilkan artikel terbaru atau berita terbaru di halaman situs kita atau pelanggan kita.Dengan adanya penggunaan CSS Bootstrap, hal tersebut tidaklah sulit, karena kita bisa membuat kolom-kolom berita ...


Penggunaan if dan else di dalam MYSQL dan PHP

Halo sobat Tatamedia, web design di Surabaya dan Bali.Kali ini kita akan sedikit belajar tentang penggunaan if di dalam syntax mysql, sehingga lebih mempersingkat query. Secara umum, if di dalam mysql memiliki format sebagai berikut: IF(kondisi, ni ...


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


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