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के लिए पाया जा सकता है। ए> ।