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