इस लेख में तारीख . को परिवर्तित करने के उदाहरण हैं एक डेटाटाइम . के लिए मान SQL सर्वर में मान।
जब आप किसी तारीख . को रूपांतरित करते हैं डेटाटाइम . के लिए मान , अतिरिक्त जानकारी को मूल्य में जोड़ा जाता है। ऐसा इसलिए है क्योंकि डेटाटाइम डेटा प्रकार में दिनांक और समय दोनों की जानकारी होती है। तारीख दूसरी ओर, डेटा प्रकार में केवल तारीख की जानकारी होती है।
उदाहरण 1 - निहित रूपांतरण
यहां तारीख . के बीच निहित रूपांतरण का एक उदाहरण दिया गया है और डेटाटाइम .
DECLARE @thedate date, @thedatetime datetime SET @thedate = '2020-12-01' SET @thedatetime = @thedate SELECT @thedate AS 'date', @thedatetime AS 'datetime';
परिणाम:
+------------+-------------------------+ | date | datetime | |------------+-------------------------| | 2020-12-01 | 2020-12-01 00:00:00.000 | +------------+-------------------------+
यह एक अंतर्निहित रूपांतरण है क्योंकि हम इसे स्पष्ट रूप से परिवर्तित करने के लिए रूपांतरण फ़ंक्शन (जैसे नीचे वाले) का उपयोग नहीं कर रहे हैं। इस मामले में, जब हम तिथि . असाइन करने का प्रयास करते हैं, तो SQL सर्वर पर्दे के पीछे एक अंतर्निहित रूपांतरण करता है एक डेटाटाइम . के लिए मान चर।
हम देख सकते हैं कि तारीख चर में केवल दिनांक जानकारी होती है, जबकि, डेटाटाइम चर में दिनांक और समय दोनों की जानकारी होती है।
जब आप तारीख . के बीच कनवर्ट करते हैं और डेटाटाइम , समय घटक 00:00:00.000
. पर सेट है . ऐसा इसलिए है क्योंकि दिनांक मान में कोई समय की जानकारी नहीं होती है, इसलिए SQL सर्वर के पास यह जानने का कोई तरीका नहीं है कि आप किस समय चाहते हैं (यदि कोई हो)।
उदाहरण 2 - समय बदलें
यदि आपको समय बदलने की आवश्यकता है (लेकिन वही तिथि रखें), तो आप DATEADD()
का उपयोग कर सकते हैं ऐसा करने के लिए कार्य करें।
DECLARE @thedate date, @thedatetime datetime SET @thedate = '2020-12-01' SET @thedatetime = @thedate SET @thedatetime = DATEADD(hour, 8, @thedatetime) SELECT @thedate AS 'date', @thedatetime AS 'datetime';
परिणाम:
+------------+-------------------------+ | date | datetime | |------------+-------------------------| | 2020-12-01 | 2020-12-01 08:00:00.000 | +------------+-------------------------+
उदाहरण 3 - CAST() का उपयोग करके स्पष्ट रूपांतरण
यहां स्पष्ट रूपांतरण का एक उदाहरण दिया गया है। इस मामले में, मैं CAST()
. का उपयोग करता हूं सीधे SELECT
. के अंदर काम करता है तारीख . के बीच स्पष्ट रूप से रूपांतरित होने वाला कथन और डेटाटाइम .
DECLARE @thedate date SET @thedate = '2020-12-01' SELECT @thedate AS 'date', CAST(@thedate AS datetime) AS 'datetime';
परिणाम:
+------------+-------------------------+ | date | datetime | |------------+-------------------------| | 2020-12-01 | 2020-12-01 00:00:00.000 | +------------+-------------------------+
तो हम निहित रूपांतरण के समान परिणाम प्राप्त करते हैं।
हम समय को इस तरह भी समायोजित कर सकते हैं:
DECLARE @thedate date SET @thedate = '2020-12-01' SELECT @thedate AS 'date', DATEADD(hour, 8, CAST(@thedate AS datetime)) AS 'datetime';
परिणाम:
+------------+-------------------------+ | date | datetime | |------------+-------------------------| | 2020-12-01 | 2020-12-01 08:00:00.000 | +------------+-------------------------+
उदाहरण 4 - CONVERT() का उपयोग करके स्पष्ट रूपांतरण
यहां CONVERT()
. का उपयोग करके स्पष्ट रूपांतरण का एक उदाहरण दिया गया है CAST()
के बजाय फ़ंक्शन करें .
DECLARE @thedate date SET @thedate = '2020-12-01' SELECT @thedate AS 'date', CONVERT(datetime, @thedate) AS 'datetime';
परिणाम:
+------------+-------------------------+ | date | datetime | |------------+-------------------------| | 2020-12-01 | 2020-12-01 00:00:00.000 | +------------+-------------------------+
और समय को एडजस्ट करना:
DECLARE @thedate date SET @thedate = '2020-12-01' SELECT @thedate AS 'date', DATEADD(hour, 8, CONVERT(datetime, @thedate)) AS 'datetime';
परिणाम:
+------------+-------------------------+ | date | datetime | |------------+-------------------------| | 2020-12-01 | 2020-12-01 08:00:00.000 | +------------+-------------------------+