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

डेटा प्रकार डेटाटाइम में अभिव्यक्ति को परिवर्तित करते समय अंकगणित अतिप्रवाह त्रुटि

31 सितंबर कोई तारीख नहीं है, इसलिए SQL इसे एक में नहीं बदल सकता।

एक तरफ के रूप में आपको एक संस्कृति विशिष्ट प्रारूप (yyyyMMdd) में हार्ड कोड तिथियां होनी चाहिए। 01/08/2012 आपके सर्वर पर 1 अगस्त में परिवर्तित हो सकता है, लेकिन दूसरे पर चलता है और यह 8 जनवरी हो सकता है। 20120801 सभी . को 1 अगस्त में बदल जाएगा मशीनें।

इसके अलावा आप तारीखों को NVARCHAR में क्यों बदल रहे हैं? ? आप अपने पास मौजूद सूचकांकों के किसी भी लाभ को हटा रहे हैं, और अनावश्यक रूप से निहित और स्पष्ट रूपांतरण भी कर रहे हैं। मान लें कि MESSAGEINSERTDATE एक DATETIME कॉलम है जिसका आप अभी उपयोग कर सकते हैं

WHERE MESSAGEINSERTDATE BETWEEN '20120801' AND '20120930'

अगर आपको MESSAGEINSERTDATE . से समय निकालना है उपयोग करें

CAST(MESSAGEINSERTDATE AS DATE)



  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 सर्वर कॉम्पैक्ट संस्करण ISNULL(sth, '' ') एक बूलियन मान देता है?

  2. अल्पविराम से अलग किए गए कोड की एक स्ट्रिंग के लिए संबंधित अल्पविराम से अलग पाठ कैसे प्राप्त करें?

  3. कॉलम के मूल्य से दोहरे उद्धरण से कैसे छुटकारा पाएं?

  4. एसक्यूएल सर्वर 2008 - पता लगाएं कि कौन सी टेबल में विशिष्ट टेक्स्ट है

  5. प्रति समूह पहली पंक्ति का चयन