PHP Mysql Gün, Ay, Yıl Olarak Veri Çekme

Mysql'deki tablonuzu datetime formatında oluşturmuş olmanız gerekli. Eğer veriler bu şekilde depolanmışsa alttaki gruplama ve mysql'in week, month year fonksiyonlarını inceleyebilirsiniz.

SELECT COUNT(id), EXTRACT(MONTH FROM tarih), EXTRACT(YEAR FROM tarih) FROM bloggirdileri GROUP BY EXTRACT(YEAR_MONTH FROM tarih) 

alttaki tarihlerden 5. aylardakileri listeleme;

2011-05-06 11:12:13 (<-- bunu)
2012-06-06 13:12:13
2010-02-06 14:52:13
2011-05-06 21:12:13 (<-- bunu)
2001-08-06 16:12:13
2011-09-06 18:12:43
2009-01-06 11:12:13
2012-02-06 12:17:55
2010-03-06 14:15:13
2012-05-06 11:19:23  (<-- ve bunu)
SELECT * FROM tablom WHERE MONTH(tarih_sutunum) = 5

2 tarih arasını listeleme

select * from tablom where tarih_sutunum between '2012-05-01' and '2012-05-31';

Mysql de son 15 günün verisini çekme

SELECT * FROM tabloAdi WHERE tarih BETWEEN DATE_SUB( CURDATE() ,INTERVAL 15 DAY ) AND CURDATE()

Mysql de son bugüne ait verileri çekme

SELECT * FROM tabloAdi WHERE DAY(tarih) = DAY(CURDATE()); 

Mysql de bu haftaya ait verileri çekme

SELECT * FROM tabloAdi WHERE WEEK(tarih) = WEEK(CURDATE());

Mysql de bu aya ait verileri çekme

SELECT * FROM tabloAdi WHERE MONTH(tarih) = MONTH(CURDATE());

Mysql de son 10 ay ile 5 ay arasındaki tarih aralığına göre veri çekme

select * from tabloAdi where tarih BETWEEN DATE_SUB( CURDATE() ,INTERVAL 10 MONTH ) AND DATE_SUB( CURDATE() ,INTERVAL 5 MONTH )

Geçen ay için ise

 MONTH(CURDATE()-INTERVAL 1 MONTH)

Eğer sadece gün, ay, yıl verileri yeterliyse date olarak tutmayı tavsiye ederim,
eğer gün, ay, yıl ve saat de gerekliyse timestamp olarak kaydedilebilir


6 Yorum

  • Ahmet Kılıvan / 4 ay önce

    Güzel Çalışma - Tebrikler.

  • ismail / 1 yıl önce

    son 1 günün verisini alırken son 24 saat mi kastediliyor yoksa. saat saat 23:59 da bi kayıt eklendi. 00:00 olduğunda o kayıt gün içine girmiyor mu.

  • murat gülen / 2 hafta önce

    merhabalar bu yıl için WHERE YEAR(tarih) = YEAR(CURDATE()); yaptım ama sonuç alamadım nasıl yapabilirim.

  • admin / 2 hafta önce

    veritabanındaki tarih alanınızı date formatına çevirmelisiniz. Kodunuz ancak bu şekilde çalışır.

  • ali / 1 hafta önce

    hocam şu sorgu; SELECT * FROM tabloAdi WHERE DAY(tarih) = DAY(CURDATE()); aynı güne ait farklı aylarında verilerini çekiyor

  • admin / 1 hafta önce

    DAY(CURDATE()) demek ayın hangi günü ise o günü yazdırır. Bugün için 06 gibi. Diğer ayları istemiyorsan, bu gün dogumgünü olanları çekmek gibi bir şey istiyorsan sorgun şu sekilde olmalı: SELECT * FROM tabloAdi WHERE DAY(tarih) = DAY(CURDATE()) and month(tarih) = month(CURDATE())