मैं the documentation से बाहर नहीं निकल सकता क्यों SQL सर्वर निर्दिष्ट शैली के अलावा किसी प्रारूप में टेक्स्ट को पार करता है।SQL सर्वर एक अमान्य शैली का उपयोग कर VARCHAR को DATETIME में क्यों परिवर्तित करता है?
कि क्या मैं उम्मीद प्रारूप में पाठ प्रदान की परवाह किए बिना: (शैली 113
के लिए)
SELECT CONVERT(DATETIME, N'20150601', 112)
या गलत स्वरूप:
SELECT CONVERT(DATETIME, N'20150601', 113)
परिणाम एक ही कर रहे हैं: 2015-06-01 00:00:00.000
मैं बाद उम्मीद करेंगे तिथि (सही ढंग से) को बदलने में विफल होने के लिए।
VARCHAR
से DATETIME
को परिवर्तित करने का प्रयास करते समय यह कौन से नियमों को नियोजित करता है? अर्थात। उत्तरार्द्ध (गलत प्रारूप शैली) अभी भी तारीख को सही तरीके से क्यों पार्स करता है?
संपादित करें: ऐसा लगता है कि मैं पर्याप्त स्पष्ट नहीं हुआ हूं। स्टाइल 113
dd mon yyyy hh:mi:ss:mmm(24h)
की अपेक्षा करनी चाहिए लेकिन यह किसी कारण से yyyymmdd
प्रारूप में मूल्यों को खुशी से परिवर्तित करता है।
आप DATETIME को वापस कर रहे हैं, DATETIME के पाठपरक प्रतिनिधित्व नहीं, इसलिए शैली अप्रासंगिक है। यदि आप शैली को कुछ करने के लिए देखना चाहते हैं तो फिर DATETIME को फिर से VARCHAR पर कनवर्ट करें, उदा। कन्वर्ट चुनें (वचर (20), कन्वर्ट (डेटाटाइम, एन'20150601 '), 113) –
शायद वास्तविक रूप से पहले एक अंतर्निहित रूपांतरण हो रहा है? – Blim
मेरा उत्तर हटा दिया गया, लेकिन जब अभिव्यक्ति दिनांक या समय डेटा प्रकार है, तो शैली निम्न तालिका में दिखाए गए मानों में से एक हो सकती है। आपके पास ** ** ** डेटाटाइम अभिव्यक्ति नहीं है। – Mackan