आप HOUR() का उपयोग कर सकते हैं समारोह:
SELECT * FROM 'table' WHERE HOUR(`updatetime`) = 9
काश, इस क्वेरी का प्रदर्शन भयानक होगा , जैसे ही आप कुछ हज़ार पंक्तियों को पार करते हैं - फ़ंक्शन अनुक्रमित नहीं होते हैं, इसलिए इस क्वेरी के चलने पर हर बार एक पूर्ण तालिका स्कैन होगा।
हमने ऐसी ही स्थिति में क्या किया:हमने एक और कॉलम updatetime_hour
. बनाया , इसे अनुक्रमित किया, और इसे डालने पर पॉप्युलेट किया (और अपडेट पर अपडेट किया गया); तो क्वेरी तेज हो जाती है:
SELECT * FROM 'table' WHERE `updatetime_hour` = 9
हां, हमने डेटा को असामान्य बना दिया है, और यह थोड़ा अधिक हाउसकीपिंग है, लेकिन मुझे अभी तक एक तेज़ समाधान नहीं दिख रहा है। (हमने updatetime_hour
. को पॉप्युलेट करने के लिए इंसर्ट और अपडेट ट्रिगर्स पर विचार किया और उनका आकलन किया updatetime
. से , लेकिन प्रदर्शन के खिलाफ फैसला किया; देखें कि क्या वे आपके लिए उपयोगी होंगे।)