Mysql Verileri Doğum Günü Yaklaşana Göre Sıralama
-
Arkadaşlar yapmak istediğim şey , üyeleri doğum günü yakınlığına göre listelemek. Doğum günü daha yakın olan uzak olana göre üstte listelensin.
Dil olarak PHP kullanıyorum. Veritabanı MySql
Eğer sql kısmında bu işi halledebiliyorsam orda yapayım dedim. Yoksa da php de bunun için bir fonksiyon yazıp gelen verileri işlemden geçireceğim vs derken iş yükü artacak.
-
Sqlde dogum tarihini order by kullanarak siraliyabilirsin
-
select datediff(dogum_gunu, now()) as zaman_farki, uyeler.*
from uyeler
order by zaman_farki asc
dener misin ?
yolbulucu tarafından 04/Eki/18 20:06 tarihinde düzenlenmiştir -
yolbulucu bunu yazdı
select datediff(dogum_gunu, now()) as zaman_farki, uyeler.*
from uyeler
order by zaman_farki asc
dener misin ?5 gün önce doğum günü olan kişi 10 gün sonra doğum günü olan kişiden evvel listeleniyor hocam. Doğum günü geçenleri öne değil bir sonraki sene gelecek doğum gününe göre listeletmem lazım hocam.
-
coder2 bunu yazdıyolbulucu bunu yazdı
select datediff(dogum_gunu, now()) as zaman_farki, uyeler.*
from uyeler
order by zaman_farki asc
dener misin ?5 gün önce doğum günü olan kişi 10 gün sonra doğum günü olan kişiden evvel listeleniyor hocam. Doğum günü geçenleri öne değil bir sonraki sene gelecek doğum gününe göre listeletmem lazım hocam.
negatiflik yuzunden heralde
soyle dene bi :
select abs(datediff(dogum_gunu, now())) as zaman_farki, uyeler.*
from uyeler
order by zaman_farki asc -
yolbulucu bunu yazdıcoder2 bunu yazdıyolbulucu bunu yazdı
select datediff(dogum_gunu, now()) as zaman_farki, uyeler.*
from uyeler
order by zaman_farki asc
dener misin ?5 gün önce doğum günü olan kişi 10 gün sonra doğum günü olan kişiden evvel listeleniyor hocam. Doğum günü geçenleri öne değil bir sonraki sene gelecek doğum gününe göre listeletmem lazım hocam.
negatiflik yuzunden heralde
soyle dene bi :
select abs(datediff(dogum_gunu, now())) as zaman_farki, uyeler.*
from uyeler
order by zaman_farki asczaman_farki kolonu pozitif hale dondü fakat sıralama doğum günü yakınlığına gore olmadı hocam. İd ye gore 2-1-3 olarak sıralaması lazım ama aşağıdaki gibi sıralama donüyor.

-
coder2 bunu yazdıyolbulucu bunu yazdı
select datediff(dogum_gunu, now()) as zaman_farki, uyeler.*
from uyeler
order by zaman_farki asc
dener misin ?5 gün önce doğum günü olan kişi 10 gün sonra doğum günü olan kişiden evvel listeleniyor hocam. Doğum günü geçenleri öne değil bir sonraki sene gelecek doğum gününe göre listeletmem lazım hocam.
where dogum_gunu > now() eklesen
-
SELECT *, ( if( date_format(now(),'%m-%d')>date_format(dogum_gunu,'%m-%d'), concat(date_format(now(),'%Y')+1,'-',date_format(dogum_gunu,'%m-%d')), concat(date_format(now(),'%Y'),'-',date_format(dogum_gunu,'%m-%d'))) ) as gelecek_dogum_gunu FROM user order by gelecek_dogum_gunu
bunun işini görmesi lazım
wert tarafından 05/Eki/18 00:39 tarihinde düzenlenmiştir -
wert bunu yazdı
SELECT *, ( if( date_format(now(),'%m-%d')>date_format(dogum_gunu,'%m-%d'), concat(date_format(now(),'%Y')+1,'-',date_format(dogum_gunu,'%m-%d')), concat(date_format(now(),'%Y'),'-',date_format(dogum_gunu,'%m-%d'))) ) as gelecek_dogum_gunu FROM user order by gelecek_dogum_gunu
bunun işini görmesi lazım
büyük işareti yanlış oldu sanırım küçük olması lazım
wert tarafından 05/Eki/18 00:41 tarihinde düzenlenmiştir
