भ्रम की जड़ यही है। सिर्फ इसलिए कि SQL सर्वर प्रबंधन स्टूडियो दिखाता है उस प्रारूप में डेटाटाइम कॉलम का मतलब यह नहीं है कि इसे टेक्स्ट YYYY-MM-DD hh:mm:ss.zzz के रूप में संग्रहीत किया जाता है। इसे बाइनरी के रूप में संग्रहीत किया जाता है, 0000101000001010 जैसा कुछ..
आपकी तिथियां SQL सर्वर में बाइट्स की एक श्रृंखला के रूप में संग्रहीत की जाती हैं (बिट्स वास्तव में) जो कुछ संख्यात्मक मान बनाती हैं जो 1900-01-01 से ऑफसेट है। तिथियों का कोई अंतर्निहित प्रारूप नहीं है। आप जिस बात का जिक्र कर रहे हैं, वह यह है कि SSMS डिफ़ॉल्ट रूप से [प्रदर्शन] डेटाटाइम कॉलम YYYY-MM-DD hh:mm:ss.zzz के रूप में दिखाता है। यदि आप एक फ्रंट-एंड प्रोग्रामिंग टूल का उपयोग करते हैं, तो वह भी एक डिफ़ॉल्ट [डिस्प्ले] प्रारूप लागू कर सकता है, जब तक कि आपने दूसरे के लिए न कहा हो।
विकल्प या कॉन्फ़िगरेशन के माध्यम से SSMS को किसी अन्य प्रारूप में डेटाटाइम डेटा दिखाने का कोई तरीका नहीं है। यदि आपको जरूरी है, तो आपको डेटाटाइम कॉलम को एक विशेष प्रारूप में टेक्स्ट समकक्ष वाले VARCHAR कॉलम में कनवर्ट करने के लिए SQL क्वेरी को अपडेट करना होगा। यह एसएसएमएस में उपयोगी हो सकता है, लेकिन जब जीयूआई/वेब ऐप्स को फ्रंट-एंड करने के लिए डेटा स्रोत के रूप में उपयोग किया जाता है तो खराब होगा - क्योंकि मान डेटाटाइम नहीं हैं और अंतराल गणना, रेखांकन, तिथि नियंत्रण आदि के लिए उपयोग नहीं किए जा सकते हैं।पी>
समय प्रदर्शित करने का यह उदाहरण देखें (getdate ()) YYYY-DD-MM के रूप में, एक बहुत ही असामान्य प्रारूप। ध्यान दें कि दिनांक फ़ील्ड/चर का दो बार उपयोग किया जाना है:
select stuff(convert(char(7), getdate(), 120), 5, 0, '-' + convert(char(2), getdate(), 3))