2016-10-05 17 views
5

के लिए एक तिथि स्ट्रिंग परिवर्तित मैं Presto पर हूँ और एक तिथि varchar ऐसा दिखता है जैसे इस प्रारूप में उपलब्ध है - Presto एसक्यूएल - दिनांक स्वरूप

7/14/2015 8:22:39 AM 

मैं Presto डॉक्स देखा और विभिन्न चीजों की कोशिश की है (डाली, date_format, split_part को पार्स करने के लिए और फिर कास्ट करें) और इसे डेट प्रारूप में कनवर्ट करने के लिए नहीं मिल रहा है जिसे मैं date_diff जैसे कार्यों के साथ उपयोग कर सकता हूं।

मैंने कोशिश की:

cast(fieldname as timestamp) 
date_format(fieldname, '%Y-%m-%d %T) 

दोनों मुझे इस

'Value cannot be cast to timestamp: 3/31/2016 6:05:04 PM' 

मैं यह कैसे परिवर्तित की तरह एक त्रुटि दे सकता है?

+0

क्यों 'सीएएसटी' काम नहीं कर रहा है? आपने इसे जोड़ने का प्रयास कैसे किया? –

+0

@Prdp जोड़ा नमूना वाक्यविन्यास – Moosa

+0

मुझे लगता है कि समस्या दिनांक प्रारूप के साथ है। क्या आप इस प्रारूप को '2016-03-31 6:05:04 अपराह्न' जैसे बदल सकते हैं और इसे कास्ट कर सकते हैं? –

उत्तर

-1

इस प्रयास करें:

SELECT convert(datetime, '7/14/2015 8:22:39 AM', 101) 

उत्पादन:

2015-07-14 08: 22: 39,000

+0

presto पर इस काम की तरह दिखता नहीं है। यह कहता है कि कनवर्ट फ़ंक्शन पंजीकृत नहीं है। – Moosa

0

एसक्यूएल 2003 मानक प्रारूप निर्धारित करता है इस प्रकार है:

<unquoted timestamp string> ::= <unquoted date string> <space> <unquoted time string> 
<date value> ::= <years value> <minus sign> <months value> <minus sign> <days value> 
<time value> ::= <hours value> <colon> <minutes value> <colon> <seconds value> 

इसके बीच कुछ परिभाषाएं हैं जो इन्हें वापस लिंक करती हैं, लेकिन में वैकल्पिक .mmm मिलीसेकंड के साथ सभी SQL डेटाबेस पर काम करने की आवश्यकता होती है।

+0

हाँ लेकिन यह एएम/पीएम के साथ कुछ करने के लिए मिला है। अगर मैं 'कास्ट का चयन करता हूं (' 2016-03-31 6:05:04 अपराह्न 'टाइमस्टैम्प के रूप में)' यह काम नहीं करता है। लेकिन अगर मैं am/pm को हटाता हूं और 'कास्ट का चयन करता हूं (' 2016-03-31 6:05:04 'टाइमस्टैम्प के रूप में) तो यह काम करता है। लेकिन मुझे am/pm की आवश्यकता है या 24 घंटे में कनवर्ट करना है। – Moosa

+0

यदि आप दस्तावेज के अनुसार गैर-मानक '3/31/2016 6:05:04 अपराह्न 'का उपयोग करने पर जोर देते हैं, तो प्रारूप'% c /% ई /% y% r' है। Https://prestodb.io/docs/current/functions/datetime.html – coladict

+0

पर एक नज़र डालें, इस प्रकार मेरा डेटा स्वरूपित किया गया है। मैं सुधार करने के लिए तैयार हूं लेकिन कैसे नहीं जानता। यह मेरा सवाल है। उपर्युक्त टिप्पणी के अनुसार, यदि मैं 'date_format ('7/22/2016 6:05:04 अपराह्न', '% c /% ई /% y% r') करता हूं, तो मुझे भी एक त्रुटि देता है – Moosa

11

मैंने इसे समझ लिया। नीचे इसे 24 घंटे दिनांक प्रारूप में बदलने में काम करता है।

select date_parse('7/22/2016 6:05:04 PM','%m/%d/%Y %h:%i:%s %p') 
संबंधित मुद्दे