यदि आप उन सभी पंक्तियों का चयन करना चाहते हैं जहाँ DATETIME कॉलम का DATE भाग एक निश्चित शाब्दिक से मेल खाता है, तो आप इसे पसंद नहीं कर सकते:
WHERE startTime = '2010-04-29'
क्योंकि MySQL सीधे DATE और DATETIME की तुलना नहीं कर सकता है। MySQL क्या करता है, यह दिए गए DATE शाब्दिक समय '00: 00: 00 'के साथ है। तो आपकी हालत हो जाती है
WHERE startTime = '2010-04-29 00:00:00'
निश्चित रूप से नहीं जो आप चाहते हैं!
शर्त एक सीमा है और इसलिए इसे सीमा के रूप में दिया जाना चाहिए। कई संभावनाएं हैं:
WHERE startTime BETWEEN '2010-04-29 00:00:00' AND '2010-04-29 23:59:59'
WHERE startTime >= '2010-04-29' AND startTime < ('2010-04-29' + INTERVAL 1 DAY)
पहले गलत होने की एक छोटी सी संभावना है - जब आपका DATETIME कॉलम सब्सेकंड रिज़ॉल्यूशन का उपयोग करता है और 23:59:59 + एप्सिलॉन पर एक अपॉइंटमेंट होता है। सामान्य तौर पर मैं दूसरे संस्करण का उपयोग करने का सुझाव देता हूं।
दोनों वेरिएंट स्टार्टटाइम पर एक इंडेक्स का उपयोग कर सकते हैं जो टेबल बढ़ने पर महत्वपूर्ण हो जाएगा।