कन्वर्टर तिथि और / या कैरेक्टर स्ट्रिंग की त्रुटि से समय बदलने पर ‘रूपांतरण कैसे ठीक हुआ?



समस्याओं को खत्म करने के लिए हमारे साधन का प्रयास करें

ऐसे कई उदाहरण हैं जब दिनांक और समय उस प्रारूप में प्रकट नहीं होते हैं जो आप चाहते हैं, और न ही कोई क्वेरी आउटपुट दर्शकों की आवश्यकताओं के अनुरूप होता है। आपकी आवश्यकता के अनुसार दिनांक स्ट्रिंग को प्रारूपित करने के लिए कई SQL सर्वर की अंतर्निहित विशेषताएं हैं लेकिन स्ट्रिंग के लिए SQL सर्वर द्वारा व्याख्या की जा सकती है और रूपांतरण त्रुटियों से बचने के लिए यह एक उचित प्रारूप में होना चाहिए। जब हम कभी-कभी त्रुटि के बाद चरित्र स्ट्रिंग से दिनांक या समय परिवर्तित करने का प्रयास करते हैं। 'चरित्र स्ट्रिंग से दिनांक और / या समय परिवर्तित करते समय रूपांतरण विफल रहा।'



दिनांक समय रूपांतरण त्रुटि

चित्र 1: चरित्र स्ट्रिंग से दिनांक और / या समय रूपांतरण त्रुटि



ऊपर उल्लिखित त्रुटि सामान्य रूप से तब होती है जब दिनांक शाब्दिक उचित नहीं होती है और इसे स्ट्रिंग से डेटाइम या दिनांक में परिवर्तित नहीं किया जा सकता है। यह त्रुटि कई कारणों के कारण होती है, जिनके समाधान के साथ हम विस्तार से चर्चा करेंगे।



उदाहरण 1:

यूनाइटेड किंगडम दिनांक और समय संकेतन दिन-महीने-वर्ष प्रारूप (10 जनवरी, 2015 या 10/1/2015) का उपयोग करके दिनांक प्रदर्शित करते हैं, जिसे हम एसक्यूएल सर्वर निर्मित_इन सुविधा 'कन्वर्ट' फ़ंक्शन का उपयोग स्वरूपण 103 के साथ कर सकते हैं।

नीचे दिए गए उदाहरण में हम देख सकते हैं कि प्रदान की गई तारीख स्ट्रिंग गलत प्रारूप में है। सबसे पहले, यह माह, फिर दिन और अंतिम वर्ष प्रदान कर रहा है जो गलत है और SQL सर्वर द्वारा व्याख्या नहीं की जा सकती है जिसके परिणामस्वरूप त्रुटि होती है। '103' तिथि शैली का उपयोग करके यूके शैली तिथि रूपांतरण के लिए सही प्रारूप 'dd / mm / yyyy' है।

गलत प्रारूप:

Declare @date_time_value varchar (100) = '10 / 16/2015 21:02:04 'CONVERT का चयन करें (datetime2, @date_time_value, 103) UK_Date_Time_Slle के रूप में

चित्र 2: गलत तिथि प्रारूप में त्रुटि हुई



सही प्रारूप:

ब्रिटिश और फ्रांसीसी तिथि प्रारूप 103 = 'dd / mm / yyyy' या 3 = 'dd / mm / yy' है। यहां 103 और 3 तारीख शैली हैं।

Declare @date_time_value varchar (100) = '10 / 1/15 21:02:04 'CONVERT (डेटाइम 2, @date_time_value, 103) का चयन Date_Time_Style के रूप में करें

चित्र 3: 'dd / mm / yyyy' ब्रिटिश / फ्रेंच तिथि शैली के साथ सही तिथि प्रारूप

Decdare @date_time_value varchar (100) = '10 / 1/15 21:02:04 'CONVERT चुनें (datetime2, @date_time_value, 3) UK_Date_Time_Slle के रूप में

चित्र 4: 'dd / mm / yy' ब्रिटिश / फ्रेंच तिथि शैली के साथ सही तिथि प्रारूप

उदाहरण 2:

कभी-कभी स्ट्रिंग को SQL सर्वर में परिवर्तित करने में त्रुटि होती है, न कि उपयोग की गई दिनांक या समय प्रारूपों के कारण, बल्कि यह है कि आप गलत जानकारी संग्रहीत करने का प्रयास कर रहे हैं जो योजना के लिए स्वीकार्य नहीं है।

गलत तारीख:

निम्नलिखित त्रुटि का कारण केवल यह है कि वर्ष 2019 में '29 फरवरी' जैसी कोई तारीख नहीं है क्योंकि यह एक लीक वर्ष नहीं है।

Declare @date_time_value varchar (100) = '2019-02-29 21:02:04' का चयन करें (@date_time_value डेटामेट 2 के रूप में) date_time_value के रूप में

चित्र 5: 2019 के रूप में उठाई गई त्रुटि एक लीप वर्ष नहीं है, इसलिए इसमें 29 फरवरी की तारीख नहीं है

सही वाला:

Declare @date_time_value varchar (100) = '2019-02-28 21:02:04' का चयन करें (@date_time_value डेटामेट 2 के रूप में) date_time_value के रूप में

चित्र 6: सही तारीख

आईएसओ 8601 तिथि प्रारूप:

हालाँकि, दिनांक मानों में हेरफेर करने के लिए कई प्रारूप उपलब्ध हैं, जब एक वैश्विक / अंतर्राष्ट्रीय द्रव्यमान के लिए काम करते हैं, तो यह एक डेटाटाइम प्रतिनिधित्व को चुनने के लिए एक प्रयोज्य मुद्दा हो सकता है। इसलिए संस्कृति-विशिष्ट तिथि / समय शाब्दिक रूप से बचा जाना चाहिए। अगर हम इस तारीख को '03/08/2018' मानते हैं, तो इसकी व्याख्या दुनिया के विभिन्न क्षेत्रों में अलग-अलग तरीकों से की जाएगी।

  • ब्रिटेन की शैली में इसे 'मार्च 2018 के 8 वें' के रूप में व्याख्यायित किया गया है।
  • यूरोपीय शैली में इसे '3 अगस्त 2018' के रूप में व्याख्यायित किया गया है।

सौभाग्य से, आईएसओ द्वारा विकसित अंतर्राष्ट्रीय तिथि प्रारूप में एक विकल्प है। वैश्विक मानक ISO 8601 प्रारूप 'YYYY-MM-DDThh: mm: ss' स्ट्रिंग लिटरल के लिए एक अधिक भाषा-स्वतंत्र विकल्प है और यह इन सभी मुद्दों को संबोधित करता है। जबकि, 'yyyy' वर्ष है, 'mm' महीना है और 'dd' दिन है। इसलिए अंतर्राष्ट्रीय आईएसओ प्रारूप में '8 मार्च 2018 की तारीख' को '2018-03-08' के रूप में लिखा गया है। इस प्रकार आईएसओ प्रारूप तारीख प्रतिनिधित्व के लिए सबसे अच्छा विकल्प है।

घोषित करें

चित्र 7: अंतर्राष्ट्रीय मानक आईएसओ 8601 तिथि प्रारूप

अनुशंसाएँ:

उम्मीद है, यह लेख उस भ्रम को दूर करने में मदद करेगा जो मैंने अक्सर समुदाय में तारीख / समय मूल्यों के बारे में देखा है। हालाँकि, यह अनुशंसा की जाती है कि कभी भी पाठ-प्रकार (varchar, char, nvarchar, nchar, या text) में तिथियों को संग्रहीत न करें। DATE, DATETIME और अधिमानतः DATETIME2 (अधिक सटीक) प्रकार स्तंभों में दिनांक मूल्य हमेशा संग्रहीत करें और दिनांक जानकारी स्वरूपण छोड़ दें। डेटाबेस से पुनर्प्राप्त किए जाने के बजाय उपयोगकर्ता इंटरफ़ेस परत के लिए।

2 मिनट पढ़ा