DATE_FORMAT()
एक स्ट्रिंग देता है, तारीख नहीं। BETWEEN
. को 3 स्ट्रिंग तर्क पास करना ... कौन जानता है कि वह क्या लौटाएगा।
अपने कोड को अन-अस-बैकवर्ड करने के लिए, इसका उपयोग करें:
$week_start = date('Y-m-d',time()+( 1 - date('w'))*24*3600);
$week_end = date('Y-m-d',time()+( 7 - date('w'))*24*3600);
अपनी तिथियों को mySQL की अपेक्षा के अनुसार प्रारूपित करने के लिए, और:
WHERE
start_date BETWEEN '".$week_start."' AND '".$week_end."'
क्वेरी में।
या यदि आप एक वस्तु-उन्मुख दृष्टिकोण पसंद करते हैं, तो कुछ इस तरह करें:
$week_start = new DateTime;
$week_end = new DateTime;
$week_start->setTimestamp(time()+( 1 - date('w'))*24*3600));
$week_end->setTimestamp(time()+( 7 - date('w'))*24*3600);
फिर अपनी क्वेरी में करें:
WHERE
start_date
BETWEEN '".$week_start->format('Y-m-d')."'
AND '".$week_end->format('Y-m-d')."'
फिर बाकी सब चीजों के लिए, आप अपनी इच्छानुसार प्रारूप को प्रतिध्वनित कर सकते हैं:
echo $date->format('d-m-Y'); // etc