मैं T-SQL में एक स्ट्रिंग को दिनांक में कैसे बदल सकता हूं?
मेरा परीक्षण मामला स्ट्रिंग है: '24.04.2012'
मैं T-SQL में एक स्ट्रिंग को दिनांक में कैसे बदल सकता हूं?
मेरा परीक्षण मामला स्ट्रिंग है: '24.04.2012'
जवाबों:
CONVERT(datetime, '24.04.2012', 104)
चाल चलनी चाहिए। अधिक जानकारी के लिए यहां देखें: CAST और CONVERT (Transact-SQL)
CONVERT(DateTime, DateField, 104)
यह मानते हुए कि डेटाबेस MS SQL सर्वर 2012 या अधिक है, यहाँ एक समाधान है जो काम करता है। मूल कथन में इन-लाइन ट्राइ-पार्स शामिल है:
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 के ये संदर्भ भी देखें:
यद्यपि CONVERT बात काम करती है, आपको वास्तव में इसका उपयोग नहीं करना चाहिए। आपको अपने आप से पूछना चाहिए कि आप SQL- सर्वर में स्ट्रिंग मानों को पार्स क्यों कर रहे हैं। यदि यह एक बार का काम है जहाँ आप मैन्युअल रूप से कुछ डेटा को ठीक कर रहे हैं तो आपको उस डेटा को दूसरी बार नहीं मिलेगा, यह ठीक है, लेकिन यदि कोई एप्लिकेशन इसका उपयोग कर रहा है, तो आपको कुछ बदलना चाहिए। सबसे अच्छा तरीका "डेट" डेटा प्रकार का उपयोग करना होगा। यदि यह उपयोगकर्ता इनपुट है, तो यह और भी बुरा है। फिर आपको पहले क्लाइंट में कुछ जाँच करनी चाहिए। यदि आप वास्तव में स्ट्रिंग मान पास करना चाहते हैं जहां एसक्यूएल-सर्वर एक तारीख की उम्मीद करता है, तो आप हमेशा आईएसओ प्रारूप ('YYYYMMDD') का उपयोग कर सकते हैं और इसे स्वचालित रूप से परिवर्तित करना चाहिए।
आप उपयोग कर सकते हैं:
SELECT CONVERT(datetime, '24.04.2012', 103) AS Date
CONVERT(DateTime, ExpireDate, 121) AS ExpireDate
क्या करना चाहिए, परिणाम:
2012-04-24 00:00:00.000