Aşağıdaki sorguyu kullanıyorum. PHP ile MySQL arasındaki hafta farkları
SELECT COUNT(*), WEEK(date), YEAR(date) FROM myTable GROUP ON YEAR(date), WEEK(date)
aşağıdaki sonuçlar
Şimdi 2012'nin 35 Ben, ancak, bunun benim WHERE yan tümcesinde
WEEK(date)=35 AND YEAR(date)=2012
kullanmak istemeyen haftada tüm 39 kayıtları almak istiyorum
32 33 2012
43 34 2012
39 35 2012
17 36 2012
üretir Say dizin kullanmaz. Bunun yerine, sınırları bulmak ve koşullu kullanmak istiyorum. Ayrıca, yuvarlama hataları oluşabileceğinden BETWEEN kullanmak istemiyorum.
Bu yüzden aşağıdakileri yapmayı denedim, her şey yolunda, ama 39 kayıt almayın. Açıkçası MySQL ve PHP haftalar ile farklı bir şekilde ilgileniyor. Görüyorum ki MySQL WEEK(), 0, 2, 4 ve 6 modlarını kullanır. İdeal olarak, insanlar tarafından en çok kullanılana sahip olacağım, en önemli şey ise DateTime tarafından sağlananla aynı olmasıdır. Nasıl yaparım? teşekkürler
$w=35;$y=2012; //Given
$w=sprintf('%02d',$w); //Make sure it is two digits
$date = new DateTime($y.'W'.$w);
$d1=$date->format('Y-m-d');
$date->add(new DateInterval('P1W'));
$d2=$date->format('Y-m-d');
$sql='SELECT * FROM myTable WHERE date >= ? AND date < ?';
MySQL differntly bunu geçmesi moduna göre hafta sayısını kolları, (http://dev.mysql.com/doc/ [Hafta (tarih, mod) bakınız] refman/5.5/tr/date-and-time-functions.html # function_week), bu sunucuyu sistem değişkenlerinde de ayarlayabilirsiniz. – fiz
39 kayıttan daha az mı alıyorsunuz? Belki de WHERE durumunuz 'date <=?' Olmalıdır. – BellevueBob
@fiz WEEK() 'in farklı modlara sahip olduğunu gördüm, ancak bunun nasıl yardımcı olacağını bilmiyordum. – user1032531