Belirtilen iki tarih arasında, ay, yineleme nasıl

3 Cevap php

Ben bir kaç ay önce başlatılan bir web sitesi var. Ben lansmanından beri, her ay bakmak bazı kod yazmak ve bu ay için kapmak ölçümleri istiyorum.

Benim soru şudur: Ne bir başlangıç ​​tarihi belirlemek için en iyi yoldur, ve sonra geçerli aya kadar (veya başka bir belirtilen tarihe kadar) kadar, bu ay tüm yol yineleme.

Herkes herhangi bir öneriniz var mı? Ben PHP ve MySQL veritabanı kullanıyorum.

3 Cevap

Ben saklı ölçümleri şemasını bilmiyorum, bu yüzden burada genel bir örnek:

Select total pageviews per month from Aug 1 thru Nov 30 2009

MySQL için kod:

SELECT DATE_FORMAT(s.date, '%Y-%m') AS  year_month , SUM( s.pageviews ) AS  s.pageviews_total 
FROM statistics s
WHERE s.date BETWEEN '2009-08-01' AND '2009-11-30'
GROUP BY DATE_FORMAT(s.date, '%Y-%m') 
ORDER BY DATE_FORMAT(s.date, '%Y-%m')

Toplulaştırılmış tablo çıktı sizin için yeterli olabilir olması. Değilse, PHP ile ile döngü can ve diğer manipülasyonlar yapmak.

Kullanmak strtotime , to increment the date by +1 month olabilir:

$date1 = strtotime('2009-01-01');
$date2 = strtotime('2010-01-01');

while ($date1 <= $date2) {
  echo date('Y-m-d', $date1) . "\n";
  $date1 = strtotime('+1 month', $date1);
}

Eğer> = 5.3.0 PHP varsa ve sen DateTime::add with an DateInterval nesne kullanabilirsiniz

Yukarıdaki örneği kontrol here.

$start_date = mktime(0, 0, 0, 1, 1, 2009);
$end_date = mktime(0, 0, 0, 10, 1, 2009);

$current_date = $start_date;
while($current_date <= $end_date) {
     $current_date = strtotime("+1 month", $current_date);
}

İşte bunu yapmak için tek yoldur. Başka biri ayrı aylarda ve yıllarda iki döngüler içerir.

SQL iyi biliyorum Ama eğer, büyük olasılıkla daha hızlı olacak, DB orada GROUP BY EXTRACT(YEAR_MONTH FROM date) tüm ölçümleri alabilir ve.