के बीच सप्ताहों में अंतर मेरे पास निम्न प्रश्न है।PHP और MySQL
SELECT COUNT(*), WEEK(date), YEAR(date) FROM myTable GROUP ON YEAR(date), WEEK(date)
यह निम्न परिणाम
32 33 2012
43 34 2012
39 35 2012
17 36 2012
मैं अब सप्ताह में सभी 39 रिकॉर्ड 2012 के 35 मैं नहीं चाहता कि, तथापि, यह के रूप में मेरे कहां खंड में WEEK(date)=35 AND YEAR(date)=2012
उपयोग करना चाहते हैं प्राप्त करना चाहते हैं पैदा करता है कहो इंडेक्स का उपयोग नहीं करता है। इसके बजाय, मैं सीमाएं ढूंढना चाहता हूं और सशर्त उपयोग करना चाहता हूं। मैं भी गोलियों का उपयोग नहीं करना चाहता क्योंकि राउंडिंग त्रुटियां हो सकती हैं।
इसलिए मैं निम्नलिखित सोचने की कोशिश करता हूं कि सभी अच्छे हैं, लेकिन 39 रिकॉर्ड प्राप्त नहीं करते हैं। स्पष्ट रूप से MySQL और PHP सप्ताहों के साथ अलग-अलग सौदे करते हैं। मैं देखता हूं कि MySQL WEEK() मोड 0, 2, 4, और 6 का उपयोग करता है जो सभी सप्ताह के साथ शुरू होने वाले सप्ताह में लौटते हैं। आदर्श रूप से, मेरे पास सबसे अधिक लोगों द्वारा उपयोग किया जाने वाला एक व्यक्ति होगा, सबसे महत्वपूर्ण बात यह है कि यह डेटटाइम द्वारा प्रदान की गई है। मैं ऐसा कैसे करूं? धन्यवाद
$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 आप इसे पारित मोड के आधार पर सप्ताह गिनती संभालती है, (http://dev.mysql.com/doc/ [वीक (तिथि, मोड) देखें] refman/5.5/en/date-and-time-functions.html # function_week), आप सिस्टम चर में इस सर्वर-व्यापी को भी सेट कर सकते हैं। – fiz
क्या आपको 39 से कम रिकॉर्ड मिल रहे हैं? शायद आपकी कहां स्थिति 'तारीख <=?' होनी चाहिए। – BellevueBob
@fiz मैंने देखा कि कैसे WEEK() के अलग-अलग तरीके थे, लेकिन यह सुनिश्चित नहीं था कि यह कैसे मदद करेगा। – user1032531