समस्या यह है कि आपकी स्ट्रिंग नहीं है एक स्वीकृत SQL सर्वर डेटाटाइम प्रारूप। SQL सर्वर ISO8601 . को पहचानता है प्रारूप, जो है:
yyyy-mm-ddThh:mi:ss.mmm
जो होगा 2013-03-02T16:48:00 आपकी उपरोक्त तिथि के लिए।
देखें दिनांक और समय शैलियाँ अनुभाग।
तो निम्नलिखित कथन विफल हो जाएगा:
declare @date nvarchar(max) = '20130302T164800'
select convertedDate = cast(@date as datetime)
यदि आप स्ट्रिंग को ISO8601 . में कनवर्ट करते हैं प्रारूप, कथन कार्य करेगा:
declare @date nvarchar(max) = '2013-03-02T16:48:00'
select convertedDate = cast(@date as datetime)
आप अपने प्रारूप को एक SQL सर्वर में अपडेट कर सकते हैं जो एक कथन में स्ट्रिंग को एक डेटाटाइम में पहचानता है और कास्ट करता है:
declare @date nvarchar(max) = '20130302T164800'
select cast(left(@date, 4)
+ '-' + substring(@date,5,2)
+ '-' + substring(@date,7,5)
+ ':' + substring(@date,12,2)
+ ':' + substring(@date,14,2) as datetime)
यह सिर्फ एक उदाहरण है, आप इसे SQL सर्वर द्वारा मान्यता प्राप्त किसी भी प्रारूप में परिवर्तित कर सकते हैं, लेकिन यह इसे ISO8601 में बदल देता है . मूल रूप से, रूपांतरण को काम करने की अनुमति देने के लिए इसे एक अलग प्रारूप में परिवर्तित करें।