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

दिनांक से रूपांतरण त्रुटि के साथ YEAR विफल क्यों होगा?

मुझे लगता है कि RValues किसी कारण से किसी प्रकार का एक स्ट्रिंग कॉलम है। आपको इसे ठीक करना चाहिए और दिनांक डेटा प्रकार का उपयोग करके दिनांक डेटा संग्रहीत करना चाहिए (जाहिर है कि इस मिश्रित बैग से अलग कॉलम में)।

अगर आप इसे ठीक नहीं कर सकते हैं, तो आप ऊपर बताए गए डेमियन को इसके द्वारा रोक सकते हैं:

CASE WHEN ISDATE(RValues) = 1 THEN CONVERT(Date, RValues) END AS FechaFirma 

(जो "तारीख" को NULL बना देगा यदि SQL सर्वर यह पता नहीं लगा सकता है कि इसे किसी तिथि में कैसे परिवर्तित किया जाए।)

आप केवल WHERE . जोड़कर इसे रोक नहीं सकते खंड, क्योंकि SQL सर्वर अक्सर SELECT . में रूपांतरण का प्रयास करने का प्रयास करेगा फ़िल्टर करने से पहले सूची (सब कुछ योजना पर निर्भर करता है)। आप सबक्वेरी, सीटीई, जॉइन ऑर्डर संकेत आदि का उपयोग करके भी संचालन के क्रम को बाध्य नहीं कर सकते। इस मुद्दे के बारे में एक खुला कनेक्ट आइटम है - वे "इसके बारे में जागरूक हैं" और "भविष्य के संस्करण में इसे संबोधित करने की आशा करते हैं ।"

एक CASE अभिव्यक्ति का छोटा, जो कनवर्ट करने का प्रयास करने से पहले SQL सर्वर को ISDATE() परिणाम का मूल्यांकन करने के लिए मजबूर करता है (जब तक कि किसी भी शाखा में कोई एग्रीगेट मौजूद नहीं है ), आप यह कर सकते हैं:

  • फ़िल्टर किए गए परिणामों को #temp तालिका में डंप करें, और उसके बाद बाद में उस #temp तालिका से चयन करें, और केवल तब कनवर्ट करें लागू करें।
  • बस स्ट्रिंग वापस करें, और इसे क्लाइंट पर एक तिथि के रूप में मानें, और वहां से YEAR/MONTH आदि भागों को बाहर निकालें
  • YEAR =LEFT(col,4) आदि खींचने के लिए बस स्ट्रिंग मैनिपुलेशन का उपयोग करें।
  • TRY_CONVERT() का उपयोग करें चूँकि मैंने अभी देखा है कि आप SQL Server 2012 पर हैं:

    TRY_CONVERT(DATE, RValues) AS FechaFirma
    



  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. कई स्तंभों को एक में मिलाएँ, समानता बनाए रखें और अंतरों को बदलें

  3. टीएसक्यूएल:तालिका में स्ट्रिंग का नेस्टेड स्प्लिट/पार्स (एकाधिक समेकित टैग:एक स्ट्रिंग में मान)

  4. वर्तमान उपयोगकर्ता की भूमिकाओं को कैसे क्वेरी करें

  5. 11526 त्रुटि के साथ नई अस्थायी तालिका बनाने के लिए OPENQUERY (संग्रहित प्रक्रिया निष्पादित करें) का उपयोग करना विफल रहता है