आपका समाधान ठीक है। यदि तिथियां शाब्दिक हैं, तो मैं पसंद करूंगा, हालांकि:
WHERE datefield >= '2010-01-01 00:00:00'
AND datefield < '2012-01-01 00:00:00'
यह बिल्कुल वैसा ही प्रदर्शन करता है, लेकिन अधिक रखरखाव योग्य है, क्योंकि यह स्पष्ट करता है कि प्रत्येक शाब्दिक "तारीख" एक टाइमस्टैम्प है, न कि तारीख। उदाहरण के लिए, मान लीजिए कि कभी कोई आपकी क्वेरी को निम्न में बदल देता है
AND datefield <= '2012-01-01'
... पूरे दिन "2012-01-01" को क्वेरी में शामिल करने की अपेक्षा (और असफल)। बाद के वाक्य विन्यास के साथ, इरादा अधिक स्पष्ट है और इस भ्रम को रोका जाता है।
इसे और भी स्पष्ट करने के लिए (शायद बहुत वर्बोज़), आप स्पष्ट कास्ट कर सकते हैं:
WHERE datefield >= '2010-01-01 00:00:00'::timestamp
AND datefield < '2012-01-01 00:00:00'::timestamp
मैं to_date()
का उपयोग नहीं करूंगा यहां समान कारणों से (संभावित डेटाटाइप भ्रम), न ही to_timestamp()
(यह एक timestamptz
देता है )।
BTW, मैंने अनुशंसित अभ्यास (अपरकेस में कीवर्ड, लोअरकेस में पहचानकर्ता) का अनुपालन करने के लिए मामले को संशोधित किया है