इस लेख में डेटाटाइम . को रूपांतरित करने के उदाहरण हैं स्मॉलडेटटाइम . के लिए मान SQL सर्वर में मान।
डेटाटाइम . को रूपांतरित करने के लाभों में से एक स्मॉलडेटटाइम . के लिए मान यह है कि आप भंडारण आकार को 8 बाइट्स से घटाकर 4 बाइट्स कर देते हैं। हालाँकि, आप ऐसा करने के लिए सटीकता खो देते हैं।
डेटाटाइम डेटा प्रकार में 3 अंकों का आंशिक सेकंड भाग शामिल होता है। इसकी सटीकता .000, .003, या .007 सेकंड की वृद्धि के लिए गोल है।
स्मॉलडेटटाइम दूसरी ओर, डेटा प्रकार में कोई आंशिक सेकंड नहीं होता है, और इसका सेकंड घटक हमेशा शून्य (:00) पर सेट होता है। साथ ही, इसकी सटीकता केवल निकटतम मिनट तक होती है।
जब आप किसी डेटाटाइम . को रूपांतरित करते हैं स्मॉलडेटटाइम . के लिए मान , दिनांक और समय भाग का भाग कॉपी किया जाता है। सेकंड घटक शून्य पर सेट है (मूल मान की परवाह किए बिना) और समय को निकटतम मिनट तक गोल किया जाता है। कोई भी आंशिक सेकंड हटा दिए जाते हैं।
उदाहरण 1 - निहित रूपांतरण
यहां डेटाटाइम . के बीच निहित रूपांतरण का एक उदाहरण दिया गया है और स्मॉलडेटटाइम .
DECLARE @thedatetime datetime, @thesmalldatetime smalldatetime; SET @thedatetime = '2025-05-21 10:15:30.123'; SET @thesmalldatetime = @thedatetime; SELECT @thedatetime AS 'datetime', @thesmalldatetime AS 'smalldatetime';
परिणाम:
+-------------------------+---------------------+ | datetime | smalldatetime | |-------------------------+---------------------| | 2025-05-21 10:15:30.123 | 2025-05-21 10:16:00 | +-------------------------+---------------------+
यह एक अंतर्निहित रूपांतरण है क्योंकि हम इसे स्पष्ट रूप से परिवर्तित करने के लिए रूपांतरण फ़ंक्शन (जैसे नीचे वाले) का उपयोग नहीं कर रहे हैं। इस मामले में, जब हम डेटाटाइम असाइन करने का प्रयास करते हैं, तो SQL सर्वर पर्दे के पीछे एक अंतर्निहित रूपांतरण करता है। स्मॉलडेटटाइम . के लिए मान चर।
इस उदाहरण में हम देख सकते हैं कि स्मॉलडेटटाइम मान में भिन्नात्मक सेकंड शामिल नहीं हैं, सेकंड को शून्य पर सेट कर दिया गया है, और मिनट को गोल कर दिया गया है।
उदाहरण 2 - CAST() का उपयोग करके स्पष्ट रूपांतरण
यहां स्पष्ट रूपांतरण का एक उदाहरण दिया गया है। इस मामले में, मैं CAST()
. का उपयोग करता हूं सीधे SELECT
. के अंदर काम करता है डेटाटाइम . के बीच स्पष्ट रूप से कनवर्ट करने के लिए कथन और स्मॉलडेटटाइम .
DECLARE @thedatetime datetime; SET @thedatetime = '2025-05-21 10:15:30.125'; SELECT @thedatetime AS 'datetime', CAST(@thedatetime AS smalldatetime) AS 'smalldatetime';
परिणाम:
+-------------------------+---------------------+ | datetime | smalldatetime | |-------------------------+---------------------| | 2025-05-21 10:15:30.127 | 2025-05-21 10:16:00 | +-------------------------+---------------------+
आपने देखा होगा कि इस उदाहरण में मैंने प्रारंभिक मान को @thedatetime
पर निर्दिष्ट करते समय भिन्नात्मक सेकंड बदल दिए हैं . लेकिन क्योंकि मैं इसे डेटाटाइम . को असाइन कर रहा हूं डेटा प्रकार, आंशिक सेकंड भाग को गोल किया जाता है (क्योंकि इसकी सटीकता .000, .003, या .007 सेकंड की वृद्धि के लिए गोल होती है)। इस मामले में मैं 125
. का एक भिन्नात्मक सेकंड निर्दिष्ट करने का प्रयास करता हूं लेकिन यह 127
. तक गोल हो जाता है ।
हालांकि, यह स्मॉलडेटटाइम . को प्रभावित नहीं करता है मूल्य।
उदाहरण 3 - CONVERT() का उपयोग करके स्पष्ट रूपांतरण
यहां CONVERT()
. का उपयोग करके स्पष्ट रूपांतरण का एक उदाहरण दिया गया है CAST()
के बजाय फ़ंक्शन करें .
DECLARE @thedatetime datetime; SET @thedatetime = '2025-05-21 10:15:30.125'; SELECT @thedatetime AS 'datetime', CONVERT(smalldatetime, @thedatetime) AS 'smalldatetime';
परिणाम:
+-------------------------+---------------------+ | datetime | smalldatetime | |-------------------------+---------------------| | 2025-05-21 10:15:30.127 | 2025-05-21 10:16:00 | +-------------------------+---------------------+