मैंने एंटरप्राइज़ पोस्टग्रेज़ में नीचे दी गई क्वेरी के साथ प्रयास किया जो वहां पूरी तरह से ठीक काम कर रहा है लेकिन पोस्टग्रेज़ के ओपन सोर्स (समुदाय) संस्करण में विफल रहा है।

select (trunc(now())::date - trunc(now())::date) > '728 days' limit 1

मैंने इसे संगत बनाने के लिए क्वेरी में कुछ संशोधन भी किया जैसे

select (date(now())::date - date(now())::date) > '728 days' limit 1

लेकिन मुझे त्रुटि मिली

त्रुटि: पूर्णांक के लिए अमान्य इनपुट सिंटैक्स: "728 दिन"

यहां क्या बदलने की जरूरत है?

0
Saurabh wagh 16 अप्रैल 2020, 10:48

1 उत्तर

सबसे बढ़िया उत्तर

"स्टॉक" पोस्टग्रेज में आपको date_trunc() का उपयोग करने की आवश्यकता है क्योंकि trunc() केवल संख्याओं पर काम करता है। लेकिन date_trunc() का उपयोग करके आपकी अभिव्यक्ति अनिवार्य रूप से बेकार है, क्योंकि कास्ट ::date वही हासिल करेगा।

यदि आप दो DATE मान घटाते हैं, तो परिणाम एक पूर्णांक है, अंतराल नहीं, इसलिए आप शायद चाहते हैं:

select some_timestamp::date - current_date > 728

(यह मानते हुए कि आपके now() भाव कुछ अलग के लिए केवल प्लेसहोल्डर हैं, क्योंकि जैसा दिखाया गया है, उस अभिव्यक्ति का कोई मतलब नहीं है क्योंकि परिणाम हमेशा 0 होगा)

या यदि आप टाइमस्टैम्प (और एक अंतराल) के साथ काम करना चाहते हैं तो आप इसका उपयोग कर सकते हैं:

select date_trunc('day', some_timestamp) - now() > interval '728 day'
2
a_horse_with_no_name 16 अप्रैल 2020, 08:29