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: Penggunaan Bootstrap-DateTimePicker untuk range tanggal

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: Penggunaan Bootstrap-DateTimePicker untuk range tanggal
$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 ...


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


Cara mempercepat loading web

Sebagai Jasa Web Design Surabaya, kami seringkali menghadapi saat load sebuah website tidak maksimal, karena harus menunggu cukup lama sampai ada content yang dimunculkan.Hal ini bisa terjadi jika halaman web kita memiliki banyak gambar, css, dan jav ...


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