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