2015-10-08 8 views
6

मैं इस क्वेरी को लिखने के लिए Impala में SQL का उपयोग कर रहा हूं। मैं इस तरह एक क्वेरी चलाने के प्रयोजनों के लिए एक तिथि प्रारूप में एक तिथि स्ट्रिंग, YYYYMMDD प्रारूप में संग्रहीत, कन्वर्ट करने के लिए कोशिश कर रहा हूँ:इम्पाला में दिनांक YYYYMMDD स्ट्रिंग को कनवर्ट करें

SELECT datadate, 
     session_info 
FROM database 
WHERE datadate >= NOW() - INTERVAL 5 DAY 
ORDER BY datadate DESC; 

के बाद से >= NOW() - INTERVAL 5 DAY कोड YYYYMMDD तार के साथ काम नहीं करेंगे, मैं 'इसे उस दिनांक प्रारूप में बदलने के लिए एक तरीका ढूंढना पसंद है जो इस प्रकार की क्वेरी के साथ काम करेगा। मेरे बारे में सोचा है कि यह इस (अन्य SQL क्वेरी संपादकों के बारे में इसी तरह के सवाल के आधार पर) की तरह कुछ दिखना चाहिए है, लेकिन यह इम्पाला में काम नहीं कर रहा:

SELECT datadate, 
     session_info, 
     convert(datetime, '20141008', 102) AS session_date 
FROM database 
WHERE session_date >= NOW() - INTERVAL 5 DAY 
ORDER BY session_date DESC; 

किसी को भी पता है कि इम्पाला में यह करने के लिए?

संपादित करें:

मैं अंत में समस्या का काम कर समाधान मिल गया। CAST या CONVERT के विन्यास का उपयोग कर प्रयास में से कोई भी इम्पाला में काम करेगा, लेकिन नीचे दिए गए क्वेरी समस्या का हल और पूरी तरह से काम कर रही है, जिससे तारीख गणित एक स्तंभ स्ट्रिंग मूल्यों से युक्त पर किया जा करने के लिए:

SELECT datadate, 
     session_info 
FROM database 
WHERE datadate >= from_unixtime(unix_timestamp(now() - interval 5 days), 'yyyyMMdd') 
GROUP BY datadate 
ORDER BY datadate DESC; 
+0

'माह (20141008) 'और' वर्ष (20141008) ' –

+0

@ vkp' माह()' और 'वर्ष()' फ़ंक्शन दिनांक या टाइमस्टैम्प के रूप में संग्रहीत इंपला डेटा में काम करते हैं, लेकिन यह नहीं दिखता है स्ट्रिंग डेटा के लिए काम करने के लिए प्रतीत होता है। – nxl4

+0

दस्तावेज़ीकरण को देखें http://www.cloudera.com/content/cloudera/en/documentation/cloudera-impala/latest/topics/impala_datetime_functions.html –

उत्तर

7

देखें समय-चिह्न Literals पर http://www.cloudera.com/content/cloudera/en/documentation/cloudera-impala/latest/topics/impala_literals.html

आप अपने स्ट्रिंग के लिए डैश जोड़ने के लिए इतना इम्पाला यह दिनांक/टाइमस्टैम्प में परिवर्तित करने में सक्षम हो जाएगा की जरूरत है।

concat_ws('-', substr(datadate,1,4), substr(datadate,5,2), substr(datadate,7)) 

जो आप अपने अभिव्यक्ति में datadate के बजाय का उपयोग कर सकते हैं: आप की तरह कुछ के साथ ऐसा कर सकते हैं।

संबंधित मुद्दे