2012-04-24 6 views

उत्तर

102
CONVERT(datetime, '24.04.2012', 104) 

चाल करना चाहिए:

मेरे परीक्षण का मामला स्ट्रिंग है। अधिक जानकारी के लिए देखें: "CAST and CONVERT (Transact-SQL)"

+3

काम नहीं करता है। टीएसक्यूएल इस त्रुटि को दिखाता है: कीवर्ड 'कनवर्टर' के पास गलत वाक्यविन्यास। – pordi

+0

CONVERT और माता-पिता के बीच की जगह निकालें: CONVERT (डेटाटाइम, '24 .04.2012 ', 104) – MAbraham1

+0

जैसा कि लिंक किए गए दस्तावेज़ में बताया गया है,' 104 'इनपुट स्ट्रिंग के स्वरूपण को इंगित करता है। – DCShannon

24

Microsoft SQL Date Formats

CONVERT(DateTime, DateField, 104) 
+0

'24-04- 2012 'नहीं होगा वैध तिथि के रूप में पहचाना गया क्योंकि यह 'एमएम-डीडी-वाईय' – Khan

+2

'कन्वर्ट (डेटटाइम, डेटफिल्ड, 104)' के बारे में क्या होगा? यह dd.mm.yyyy प्रारूप का उपयोग करने के लिए एसक्यूएल सर्वर को बताना चाहिए ... – therealmitchconnors

+0

हाँ यह काम करता है, मुझे भी मिला, धन्यवाद! –

6

हालांकि CONVERT बात काम करता है, आप वास्तव में इसका इस्तेमाल नहीं करना चाहिए। आपको खुद से पूछना चाहिए कि आप एसक्यूएल-सर्वर में स्ट्रिंग मानों को पार्स क्यों कर रहे हैं। यदि यह एक बार की नौकरी है जहां आप कुछ डेटा मैन्युअल रूप से ठीक कर रहे हैं तो आपको वह डेटा किसी अन्य समय नहीं मिलेगा, यह ठीक है, लेकिन यदि कोई एप्लिकेशन इसका उपयोग कर रहा है, तो आपको कुछ बदलना चाहिए। "दिनांक" डेटा प्रकार का उपयोग करने का सबसे अच्छा तरीका होगा। यदि यह उपयोगकर्ता इनपुट है, तो यह भी बदतर है। तो आपको पहले ग्राहक में कुछ जांच करनी चाहिए। यदि आप वास्तव में स्ट्रिंग मानों को पास करना चाहते हैं जहां SQL-Server किसी दिनांक की अपेक्षा करता है, तो आप हमेशा आईएसओ प्रारूप ('YYYYMMDD') का उपयोग कर सकते हैं और इसे स्वचालित रूप से परिवर्तित करना चाहिए।

+3

ऐसी स्थिति के बारे में क्या है जहां आप कुछ बाहरी सिस्टम से डेटा फ़ाइलों को आयात कर रहे हैं, और इनपुट कॉलम इन प्रारूपों में से एक में होता है, उदा।"05/31/2013", लेकिन जो एक स्ट्रिंग के रूप में आता है? और आप लिख रहे हैं, कहें, उस डेटा को आयात करने के लिए संग्रहीत प्रक्रिया, या आयात करने के लिए एसएसआईएस का उपयोग कर रहे हैं? फिर CONVERT उपयोग करने के लिए उपयुक्त बात होगी, है ना? –

+0

जरूरी नहीं है कि उन परिस्थितियों में जहां एमएस एसक्यूएल सर्वर लेन-देन के विरोध में विश्लेषणात्मक डेटा मॉडल होस्ट करता है, कन्वर्ट का उपयोग करना बिल्कुल ठीक है क्योंकि इसे कई बाहरी स्रोतों से निपटना है जो आसानी से किसी तारीख के रूप में नहीं आते हैं टाइप करें (जैसा डेविड बैरो ऊपर उल्लिखित है)। – Will

+0

तिथियों के लिए डिफ़ॉल्ट स्ट्रिंग शाब्दिक प्रारूप है [YYYY-MM-DD] (https://docs.microsoft.com/en-us/sql/t-sql/data-types/date-transact-sql) –

10

यहां एक समाधान है जो अच्छी तरह से काम करता है। बुनियादी बयान में लाइन की कोशिश-पार्स शामिल हैं:

SELECT TRY_PARSE('02/04/2016 10:52:00' AS datetime USING 'en-US') AS Result; 

यहाँ क्या हम उत्पादन संस्करण में लागू किया गया है:

UPDATE dbo.StagingInputReview 
SET ReviewedOn = 
    ISNULL(TRY_PARSE(RTrim(LTrim(ReviewedOnText)) AS datetime USING 'en-US'), getdate()), 
ModifiedOn = (getdate()), ModifiedBy = (suser_sname()) 
-- Check for empty/null/'NULL' text 
WHERE not ReviewedOnText is null 
    AND RTrim(LTrim(ReviewedOnText))<>'' 
    AND Replace(RTrim(LTrim(ReviewedOnText)),'''','') <> 'NULL'; 

modifiedon और ModifiedBy कॉलम आंतरिक डाटाबेस ट्रैकिंग उद्देश्यों के लिए बस कर रहे हैं।

भी देखें इन Microsoft MSDN संदर्भ:

+0

हम इसका उपयोग करते हैं उत्पादन कोड में। – MAbraham1

0
CONVERT(DateTime, ExpireDate, 121) AS ExpireDate 

क्या जरूरत है क्या करेंगे, परिणाम:

2012-04-24 00:00:00.000 
संबंधित मुद्दे