अपडेट करें
कई तिथियों के लिए अपने डेटा को क्वेरी करने का एक बेहतर अनुक्रमणिका-अनुकूल तरीका
SELECT id, FROM_UNIXTIME(timestampfield) timestamp
FROM table1
WHERE timestampfield >= UNIX_TIMESTAMP(LAST_DAY(CURDATE()) + INTERVAL 1 DAY - INTERVAL 1 MONTH)
AND timestampfield < UNIX_TIMESTAMP(LAST_DAY(CURDATE()) + INTERVAL 1 DAY);
नोट: आप अपने कॉलम डेटा पर कोई फ़ंक्शन लागू नहीं करते हैं, बल्कि शर्तों के दाईं ओर सभी आवश्यक गणना करते हैं (जो स्थिरांक हैं और निष्पादन के बाद केवल एक बार मूल्यांकन किया जाता है)। इस तरह आप MySQL को timestampfield
पर मौजूद इंडेक्स (एस) से लाभ उठाने की अनुमति देते हैं कॉलम।
मूल उत्तर:
SELECT id, FROM_UNIXTIME(timestampfield) timestamp
FROM table1
WHERE MONTH(FROM_UNIXTIME(timestampfield)) = MONTH(CURDATE())
AND YEAR(FROM_UNIXTIME(timestampfield)) = YEAR(CURDATE())
नोट: हालांकि यह क्वेरी सही परिणाम देती है, लेकिन यह उस इंडेक्स के उचित उपयोग को प्रभावी रूप से अमान्य कर देती है जो आपके पास timestampfield
पर हो सकता है कॉलम (जिसका अर्थ है कि MySQL को पूर्ण स्कैन करने के लिए मजबूर किया जाएगा)
यह रहा SQLFiddle डेमो