के बीच चयन करें मेरे पास 'YYYY-MM-DD' प्रारूप में दिनांक के रूप में कॉलम में से एक के साथ तालिका है। क्या मैं मासिक डेटा में सभी डेटा प्राप्त करने के लिए चयन का उपयोग कर सकता हूं? मान लें कि मैं 2012-01-xx से 2013-04-xx तक सभी डेटा चाहता हूं। इसलिए मैं मूल रूप से एक नीचे दिए गए जैसे एक SQL क्वेरी रहा हूँ:पोस्टग्रेस्क्ल महीने की श्रेणी
SELECT * FROM table WHERE date IN BETWEEN '2012-01' AND '2013-04' (INVALID QUERY)
हर महीने के बाद से '01' के साथ शुरू मैं शुरू हालत समायोजित करने के लिए ऊपर क्वेरी संशोधित कर सकते हैं।
SELECT * FROM table WHERE date IN BETWEEN '2012-01-01' AND '2013-04' (INVALID QUERY)
अब समस्या अंतराल के साथ आता है। मुझे दिए गए महीने की आखिरी तारीख को मैन्युअल रूप से गणना करना है, महीने की लंबाई, लीप वर्ष इत्यादि जैसे सभी कारकों को ध्यान में रखना, क्योंकि यदि दी गई तिथि अमान्य है तो क्वेरी विफल हो जाती है। तो वर्तमान में मैं ऐसा कुछ कर रहा हूं:
SELECT * FROM table WHERE date IN BETWEEN '2012-01-01' AND 'VALID_MONTH_END_DATE' (VALID Query)
मैं जानना चाहता हूं कि इस वैध समाप्ति दिनांक गणना से बचने का कोई तरीका है या नहीं?
स्पष्टीकरण
मैं अगले महीने के पहले दिन से ऊपर नहीं सोचा है, लेकिन फिर भी मैं कुछ तर्क लागू करना होगा कहते हैं, अगर इसकी दिसंबर, अगले महीने अगले वर्ष जनवरी होगी। मैं जानना चाहता था कि एक एसक्यूएल केवल समाधान संभव है?
ओवरलैप नहीं अच्छी तरह से जब मैं अंतिम तिथि पता काम करता है। पिछले महीने दिसंबर में मैं अटक गया हूं। –
आप पैरामीटर कहां से प्राप्त करते हैं? एक आवेदन पत्र? मकड़जाल? एक और सवाल? क्या आपके पास तार या पूर्णांक (वर्ष, महीना) है? –
'दिनांक' में 'अंतराल' जोड़ते समय देखभाल की जानी चाहिए। नतीजा एक 'टाइमस्टैम्प' है। हालांकि ऊपर दिए गए उदाहरण में काम करता है। यदि यह मायने रखता है, तो परिणाम को 'तिथि' पर कास्ट करें। एक अंतराल 'एन महीने' जोड़ना हमेशा उसी महीने के परिणामस्वरूप होता है, चाहे शामिल महीनों में वास्तविक दिनों की वास्तविक संख्या के बावजूद - या अधिकतम उपलब्ध दिन, जिसके परिणामस्वरूप महीने में कम दिन होते हैं। दिनों की सटीक संख्या जोड़ने के लिए, 'दिनांक' में 'पूर्णांक' जोड़ें, इसका परिणाम 'दिनांक' में होता है। –