Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

डेटाटाइम डालने के दौरान वर्ण स्ट्रिंग से दिनांक और/या समय परिवर्तित करते समय रूपांतरण विफल रहा

SQL सर्वर द्वारा समर्थित कई प्रारूप हैं - CAST और CONVERT पर MSDN पुस्तकें ऑनलाइन देखें। उनमें से अधिकतर प्रारूप आश्रित हैं आपके पास कौन सी सेटिंग्स हैं - इसलिए, ये सेटिंग्स कुछ समय काम कर सकती हैं - और कभी-कभी नहीं।

इसे हल करने का तरीका (थोड़ा अनुकूलित) ISO-8601 दिनांक प्रारूप का उपयोग करना है जो SQL सर्वर द्वारा समर्थित है - यह प्रारूप हमेशा काम करता है - आपकी SQL सर्वर भाषा और दिनांक स्वरूप सेटिंग्स पर ध्यान दिए बिना।

ISO-8601 प्रारूप SQL सर्वर द्वारा समर्थित है जो दो फ्लेवर में आता है:

  • YYYYMMDD केवल तिथियों के लिए (कोई समय भाग नहीं); यहां ध्यान दें:कोई डैश नहीं! , यह बहुत महत्वपूर्ण है! YYYY-MM-DD है नहीं आपके SQL सर्वर में दिनांक स्वरूप सेटिंग्स से स्वतंत्र और नहीं सभी स्थितियों में काम करें!

या:

  • YYYY-MM-DDTHH:MM:SS दिनांक और समय के लिए - यहां नोट करें:इस प्रारूप में है डैश (लेकिन वे कर सकते हैं छोड़ा जा सकता है), और एक निश्चित T आपके DATETIME . के दिनांक और समय भाग के बीच सीमांकक के रूप में ।

यह SQL Server 2000 और नए के लिए मान्य है।

तो अपने विशिष्ट मामले में - इन तारों का प्रयोग करें:

insert into table1 values('2012-02-21T18:10:00', '2012-01-01T00:00:00');

और आपको ठीक होना चाहिए (नोट:आपको अंतरराष्ट्रीय 24-घंटे . का उपयोग करने की आवश्यकता है इसके लिए 12 घंटे के AM/PM प्रारूप के बजाय प्रारूप)।

वैकल्पिक रूप से :यदि आप SQL सर्वर पर हैं 2008 या नया, आप DATETIME2 . का भी उपयोग कर सकते हैं डेटाटाइप (सादे DATETIME के बजाय) ) और आपका वर्तमान INSERT बिना किसी समस्या के बस काम करेगा! :-) DATETIME2 रूपांतरणों पर बहुत बेहतर और बहुत कम पसंद है - और यह SQL सर्वर 2008 या नए के लिए अनुशंसित दिनांक/समय डेटा प्रकार है।

SELECT
   CAST('02-21-2012 6:10:00 PM' AS DATETIME2),     -- works just fine
   CAST('01-01-2012 12:00:00 AM' AS DATETIME2)   -- works just fine  

मुझसे मत पूछो कि यह पूरा विषय इतना पेचीदा और थोड़ा भ्रमित करने वाला क्यों है - बस यही तरीका है। लेकिन YYYYMMDD . के साथ प्रारूप, आपको SQL सर्वर के किसी भी संस्करण के लिए और अपने SQL सर्वर में किसी भी भाषा और दिनांक स्वरूप सेटिंग के लिए ठीक होना चाहिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में डेटा प्रकार का नाम प्राप्त करने के लिए TYPE_NAME() का उपयोग करें

  2. SQL सर्वर 2016:इन-मेमोरी OLTP एन्हांसमेंट

  3. तालिका चर पर एक अनुक्रमणिका बनाना

  4. कैसे जांचें कि SQL सर्वर में एक कंप्यूटेड कॉलम "जारी" है या नहीं?

  5. MSSQL त्रुटि 'अंतर्निहित प्रदाता ओपन पर विफल'