ddmmyyyy मान्य दिनांक प्रारूप नहीं है। आपको पहले उस स्ट्रिंग को किसी ऐसी चीज़ में बनाना होगा जिसे DATE . के रूप में पार्स किया जा सके / DATETIME . सबसे तेज़ तरीका बस SUBSTRING हो सकता है टुकड़ों को mm/dd/yyyy . में प्रारूप। यह सफलतापूर्वक रूपांतरित होता है। लेकिन आपके पास एक VARCHAR(8) है . तो आपको या तो इसे बढ़ाना होगा VARCHAR(10) (या बेहतर अभी तक, बस CHAR(10) ), या परिवर्तित मान रखने के लिए स्थानीय चर घोषित करें।
उदाहरण के लिए:
DECLARE @Date VARCHAR(8); -- input parameter
SET @Date = '25032014';
DECLARE @Date2 CHAR(10);
SET @Date2 = SUBSTRING(@Date, 3, 2)
+ '/' + SUBSTRING(@Date, 1, 2)
+ '/' + SUBSTRING(@Date, 5, 4);
SELECT @Date2, CONVERT(DATE, @Date2);
-- 03/25/2014 2014-03-25
संपादित करें: दरअसल, मुझे थोड़ा आसान तरीका मिला। मैंने इस विधि से शुरुआत की लेकिन महसूस किया कि यह ddmmyyyy . के साथ काम नहीं करता है mmddyyyy . के विपरीत . मैं किसी तरह चूक गया कि dd/mm/yyyy . के लिए एक उपयुक्त दिनांक शैली संख्या थी . तो, आने वाली स्ट्रिंग में बस दो स्लैश जोड़ना और फिर CONVERT . को कॉल करना काम करता है, लेकिन केवल अगर आप 103 . का उपयोग करते हैं "शैली" के रूप में। और पहले समाधान की तरह, इसे या तो आने वाले पैरामीटर को VARCHAR(10) . में बदलना होगा या CHAR(10) VARCHAR(8) . के बजाय , या CHAR(10) . होने के लिए एक स्थानीय चर बनाना ।
DECLARE @Date VARCHAR(8); -- input parameter
SET @Date = '25032014';
DECLARE @Date2 CHAR(10);
SET @Date2 = STUFF(STUFF(@Date, 3, 0, '/'), 6, 0, '/');
SELECT @Date2, CONVERT(DATE, @Date2, 103); -- 103 = dd/mm/yyyy
-- 25/03/2014 2014-03-25
रूपांतरण "शैलियाँ" MSDN पृष्ठ पर CAST और CONVERTके लिए पाया जा सकता है। ए> ।