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

किसी ISO स्वरूपित दिनांक को DATETIME में बदलें

समस्या यह है कि आपकी स्ट्रिंग नहीं है एक स्वीकृत SQL सर्वर डेटाटाइम प्रारूप। SQL सर्वर ISO8601 . को पहचानता है प्रारूप, जो है:

yyyy-mm-ddThh:mi:ss.mmm

जो होगा 2013-03-02T16:48:00 आपकी उपरोक्त तिथि के लिए।

देखें दिनांक और समय शैलियाँ अनुभाग।

तो निम्नलिखित कथन विफल हो जाएगा:

declare @date nvarchar(max) = '20130302T164800'

select convertedDate = cast(@date as datetime)

यदि आप स्ट्रिंग को ISO8601 . में कनवर्ट करते हैं प्रारूप, कथन कार्य करेगा:

declare @date nvarchar(max) = '2013-03-02T16:48:00'

select convertedDate = cast(@date as datetime)

SQL Fiddle with डेमो

आप अपने प्रारूप को एक SQL सर्वर में अपडेट कर सकते हैं जो एक कथन में स्ट्रिंग को एक डेटाटाइम में पहचानता है और कास्ट करता है:

declare @date nvarchar(max) = '20130302T164800'

select cast(left(@date, 4)
  + '-' + substring(@date,5,2)
  + '-' + substring(@date,7,5)
  + ':' + substring(@date,12,2)
  + ':' + substring(@date,14,2) as datetime)

SQL Fiddle with डेमो

यह सिर्फ एक उदाहरण है, आप इसे SQL सर्वर द्वारा मान्यता प्राप्त किसी भी प्रारूप में परिवर्तित कर सकते हैं, लेकिन यह इसे ISO8601 में बदल देता है . मूल रूप से, रूपांतरण को काम करने की अनुमति देने के लिए इसे एक अलग प्रारूप में परिवर्तित करें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डिक्शनरी पास करें<स्ट्रिंग,इंट>संग्रहीत प्रक्रिया टी-एसक्यूएल

  2. Azure फ़ंक्शंस का उपयोग करके Azure SQL डेटाबेस में उपयोगकर्ता बनाएँ?

  3. SQL पूरी तालिका को स्थानांतरित करता है

  4. नई SQL रिकॉर्ड आईडी प्राप्त करें

  5. sql सर्वर 2008 में newsequentialid () डिफ़ॉल्ट सेट करने में त्रुटि