इस लेख में छोटे दिनांक समय . को रूपांतरित करने के उदाहरण हैं एक डेटाटाइम . के लिए मान SQL सर्वर में मान।
जब आप एक छोटे दिनांक समय . को रूपांतरित करते हैं डेटाटाइम . के लिए मान , घंटे और मिनट कॉपी किए जाते हैं, और सेकंड और भिन्न सेकंड 0
. पर सेट होते हैं ।
उदाहरण 1 - CAST () का उपयोग करके स्पष्ट रूपांतरण
यहां स्पष्ट रूपांतरण का एक उदाहरण दिया गया है। इस मामले में, मैं CAST()
. का उपयोग करता हूं सीधे SELECT
. के अंदर काम करता है स्मॉलडेटटाइम . से स्पष्ट रूप से कनवर्ट करने के लिए स्टेटमेंट से डेटाटाइम . तक .
DECLARE @thesmalldatetime smalldatetime SET @thesmalldatetime = '2031-03-25 11:15:29' SELECT @thesmalldatetime AS 'thesmalldatetime', CAST(@thesmalldatetime AS datetime) AS 'datetime';
परिणाम:
+---------------------+-------------------------+ | thesmalldatetime | datetime | |---------------------+-------------------------| | 2031-03-25 11:15:00 | 2031-03-25 11:15:00.000 | +---------------------+-------------------------+
सबसे पहले, हम देख सकते हैं कि the smalldatetime मान 00
का उपयोग करता है सेकंड घटक के लिए, भले ही हम इसे स्पष्ट रूप से 29
. पर सेट करते हैं . ऐसा इसलिए है क्योंकि the smalldatetime . का उपयोग करते समय डेटा प्रकार, सेकंड हमेशा शून्य होते हैं (और आंशिक सेकंड के बिना)।
इसलिए, जब हम मान को डेटाटाइम . में बदलते हैं , सेकंड मान (और भिन्नात्मक सेकंड) शून्य पर सेट हैं। अगर हमने अभी मूल मान डेटाटाइम . को असाइन किया होता सबसे पहले, सेकंड बरकरार रहेंगे:
DECLARE @thedatetime datetime SET @thedatetime = '2031-03-25 11:15:29' SELECT @thedatetime AS 'thedatetime';
परिणाम:
+-------------------------+ | thedatetime | |-------------------------| | 2031-03-25 11:15:29.000 | +-------------------------+
न केवल सेकंड बरकरार रहेंगे, बल्कि कोई भी आंशिक सेकंड भी बरकरार रहेगा (लेकिन केवल 3 के पैमाने तक):
DECLARE @thedatetime datetime SET @thedatetime = '2031-03-25 11:15:29.123' SELECT @thedatetime AS 'thedatetime';
परिणाम:
+-------------------------+ | thedatetime | |-------------------------| | 2031-03-25 11:15:29.123 | +-------------------------+
उदाहरण 2 - गोलाई
यहां बताया गया है कि क्या होता है यदि हम सेकंड घटक को smalldatetime को निर्दिष्ट करने से पहले उच्च मान पर सेट करते हैं डेटा प्रकार।
DECLARE @thesmalldatetime smalldatetime SET @thesmalldatetime = '2031-03-25 11:15:31' SELECT @thesmalldatetime AS 'thesmalldatetime', CAST(@thesmalldatetime AS datetime) AS 'datetime';
परिणाम:
+---------------------+-------------------------+ | thesmalldatetime | datetime | |---------------------+-------------------------| | 2031-03-25 11:16:00 | 2031-03-25 11:16:00.000 | +---------------------+-------------------------+
तो मिनट घटक को अब अगले मिनट तक पूर्णांकित कर दिया गया है।
उदाहरण 3 - CONVERT() का उपयोग करके स्पष्ट रूपांतरण
यह पहले उदाहरण जैसा ही है, इस समय को छोड़कर मैं CONVERT()
. का उपयोग करता हूं CAST()
के बजाय फ़ंक्शन करें .
DECLARE @thesmalldatetime smalldatetime SET @thesmalldatetime = '2031-03-25 11:15:29' SELECT @thesmalldatetime AS 'thesmalldatetime', CONVERT(datetime, @thesmalldatetime) AS 'datetime';
परिणाम:
+---------------------+-------------------------+ | thesmalldatetime | datetime | |---------------------+-------------------------| | 2031-03-25 11:15:00 | 2031-03-25 11:15:00.000 | +---------------------+-------------------------+
उदाहरण 4 - निहित रूपांतरण
यहाँ एक ही काम करने का एक उदाहरण है, लेकिन एक अंतर्निहित प्रकार के रूपांतरण का उपयोग करना।
DECLARE @thesmalldatetime smalldatetime, @thedatetime datetime SET @thesmalldatetime = '2031-03-25 11:15:29' SET @thedatetime = @thesmalldatetime SELECT @thesmalldatetime AS 'thesmalldatetime', @thedatetime AS 'datetime';
परिणाम:
+---------------------+-------------------------+ | thesmalldatetime | datetime | |---------------------+-------------------------| | 2031-03-25 11:15:00 | 2031-03-25 11:15:00.000 | +---------------------+-------------------------+
इसलिए हमें एक ही परिणाम मिलता है, भले ही यह एक स्पष्ट या निहित रूपांतरण हो।
यह एक अंतर्निहित रूपांतरण है क्योंकि हम इसे स्पष्ट रूप से रूपांतरित करने के लिए रूपांतरण फ़ंक्शन का उपयोग नहीं कर रहे हैं। हम केवल एक डेटा प्रकार के एक चर से दूसरे डेटा प्रकार के एक चर के लिए मान निर्दिष्ट कर रहे हैं। इस मामले में, जब हम smalldatetime असाइन करने का प्रयास करते हैं, तो SQL सर्वर पर्दे के पीछे एक अंतर्निहित रूपांतरण करता है। एक डेटाटाइम . के लिए मान चर।