PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL- एक दिनांक सीमा फ़िल्टर करें

आपका समाधान ठीक है। यदि तिथियां शाब्दिक हैं, तो मैं पसंद करूंगा, हालांकि:

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, मैंने अनुशंसित अभ्यास (अपरकेस में कीवर्ड, लोअरकेस में पहचानकर्ता) का अनुपालन करने के लिए मामले को संशोधित किया है



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. विंडोज़ में chmod og-rwx server.key

  2. क्या मैं pg_restore कमांड को निष्पादित करते समय db को छोड़ और बना सकता हूँ?

  3. PostgreSQL में एक स्ट्रिंग को टाइमस्टैम्प में कैसे बदलें

  4. एक बाइट के रूप में PostgreSQL में हेक्स के साथ टेक्स्ट स्ट्रिंग सम्मिलित करना

  5. दूसरे कंप्यूटर पर पायथन वातावरण को दोहराएं