मैंने बहुत खोजबीन की। मैं इसका उपयोग युग के समय को आज तक बदलने के लिए कर रहा हूं:

CASE 
  WHEN json_extract_path_text(cli, 'pickupDate') IS NULL OR json_extract_path_text(cli, 'pickupDate') = '' 
  THEN DATEADD(SECOND, CONVERT(bigint, json_extract_path_text(cli, 'pickupTime')), '1970-1-1'), '1970-1-1' ) 
  ELSE json_extract_path_text(cli, 'pickupDate') 
END AS "Start Date"

थोड़ा संदर्भ देने के लिए, यदि कुंजी 'पिकअपडेट' जेसन में मौजूद नहीं है, तो मुझे मूल्य प्राप्त करने के लिए इस कुंजी 'पिकअपटाइम' का उपयोग करने की आवश्यकता है। जब मैं ऐसा करता हूं, तो मुझे यह त्रुटि मिलती है:

अमान्य संचालन: समय क्षेत्र के बिना केस प्रकार टेक्स्ट और टाइमस्टैम्प का मिलान नहीं किया जा सकता है; 1 कथन विफल।

क्या कोई मुझे यहां से बाहर निकलने में मदद कर सकता है? हम समय क्षेत्र कैसे निर्दिष्ट करते हैं या यदि इसे हल करने का कोई अन्य तरीका है?

0
user3681970 5 सितंबर 2019, 12:20

2 जवाब

यह देखने के लिए कि समस्या कहाँ हो सकती है, इसे भागों में विभाजित करने का प्रयास करें।

क्या यह अभिव्यक्ति काम करती है?

DATEADD(SECOND, CONVERT(bigint, json_extract_path_text(cli, 'pickupTime')),'1970-1-1')

यदि ऐसा होता है, तो पिछली अभिव्यक्ति के परिणामी डेटा प्रकारों को खोजने का प्रयास करें और यह देखने के लिए कि क्या वे मेल खाते हैं: json_extract_path_text(cli, 'pickupDate')

यदि यह काम करता है, तो DATE '1970-1-1' को स्पष्ट रूप से DATE उपसर्ग का उपयोग करके दिनांक के रूप में घोषित करने का प्रयास करें।

साथ ही, सुनिश्चित नहीं है लेकिन ऐसा लगता है कि ऊपर पोस्ट किए गए अभिव्यक्ति में अतिरिक्त कोष्ठक हैं।

0
ravioli 5 सितंबर 2019, 12:32

त्रुटि संदेश बिल्कुल स्पष्ट है - आप केस एक्सप्रेशन से दो असंगत डेटा प्रकार वापस नहीं कर सकते।

केस एक्सप्रेशन को अपनी सभी शाखाओं से संगत डेटा प्रकारों को वापस करना होगा, इसलिए यह केवल else भाग में josn से पाठ को पढ़ने के लिए पर्याप्त नहीं है, फिर भी आपको इसे datetime में बदलने की आवश्यकता है।
मैं Amazon redshift की बारीकियों से परिचित नहीं हूं, लेकिन मुझे लगता है कि आपको convert

0
Zohar Peled 5 सितंबर 2019, 12:34