6

मैं स्पार्क एसक्यूएल के लिए नया हूं और एक स्ट्रिंग डेटा फ्रेम में एक स्ट्रिंग को टाइमस्टैम्प में बदलने की कोशिश कर रहा हूं। मैं एक स्ट्रिंग है TIME_STRINGस्पार्क एसक्यूएल कनवर्टिंग स्ट्रिंग को टाइमस्टैम्प

मेरे कोड टाइमस्टैम्प को यह स्ट्रिंग परिवर्तित करने के लिए एक स्तंभ कहा जाता है में '2017-08-01T02:26:59.000Z' की तरह लग रहा

CAST (time_string AS Timestamp) 

है लेकिन यह मुझे 2017-07-31 19:26:59

की एक टाइमस्टैम्प यह क्यों बदल रहा है देता है पहर? क्या समय बदलने के बिना ऐसा करने का कोई तरीका है?

किसी भी मदद के लिए धन्यवाद!

+0

इसे 'unix_timestamp' को टाइमस्टैम्प टाइप में डालने का प्रयास करें :) –

+0

https://stackoverflow.com/questions/35761586/spark-sql-not-converting-timezone- ठीक से देखें। – asmaier

उत्तर

9

आप unix_timestamp समारोह इस्तेमाल कर सकते हैं यूटीसी स्वरूपित तारीख कन्वर्ट करने के लिए टाइमस्टैम्प के

val df2 = Seq(("a3fac", "2017-08-01T02:26:59.000Z")).toDF("id", "eventTime") 

df2.withColumn("eventTime1", unix_timestamp($"eventTime", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").cast(TimestampType)) 

आउटपुट:

+-------------+---------------------+ 
|userid  |eventTime   | 
+-------------+---------------------+ 
|a3fac  |2017-08-01 02:26:59.0| 
+-------------+---------------------+ 

आशा इस मदद करता है!

+0

मान लीजिए कि हमारे पास दशमलव से 9 अंक हैं, क्या हमें वास्तव में 'ss.SSSSSSSSS'Z'' निर्दिष्ट करने की आवश्यकता है? – MichaelChirico

+0

@ शंकर कोइराला क्या आप कृपया 'https: // stackoverflow.com/प्रश्न/48195836/कनवर्टिंग-डे-रोशनी-बचत-समय-स्ट्रिंग-टू-टाइमस्टैम्प-देता-गलत-परिणाम 'पर एक नज़र डालें। – User12345

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