इस लेख में तारीख . को परिवर्तित करने के उदाहरण हैं एक डेटाटाइमऑफ़सेट . के लिए मान SQL सर्वर में मान।
जब आप किसी तारीख . को रूपांतरित करते हैं डेटाटाइमऑफ़सेट . का मान , अतिरिक्त जानकारी को मूल्य में जोड़ा जाता है। ऐसा इसलिए है क्योंकि डेटाटाइमऑफ़सेट डेटा प्रकार में दिनांक और समय की जानकारी, साथ ही समय ऑफ़सेट जानकारी दोनों शामिल हैं। दूसरे शब्दों में, डेटाटाइमऑफ़सेट डेटा प्रकार एक तिथि को परिभाषित करता है जो एक दिन के समय के साथ संयुक्त होता है जिसमें समय क्षेत्र जागरूकता होती है और यह 24 घंटे की घड़ी पर आधारित होती है। तारीख दूसरी ओर, डेटा प्रकार में केवल तारीख की जानकारी होती है।
जब हम तारीख . से रूपांतरित होते हैं करने के लिए डेटाटाइमऑफ़सेट , समय (और समय क्षेत्र ऑफ़सेट) स्वचालित रूप से मान में जुड़ जाता है। हालांकि, यदि आवश्यक हो तो आप हमेशा मान बदल सकते हैं (समय क्षेत्र ऑफ़सेट सहित)।
डेटाटाइमऑफ़सेट डेटा प्रकार आपको भिन्नात्मक सेकंड सटीकता निर्दिष्ट करने की भी अनुमति देता है। यदि आप इसे निर्दिष्ट नहीं करते हैं, तो यह 7 के पैमाने का उपयोग करता है। इसका अर्थ है कि इसमें दशमलव बिंदु के दाईं ओर 7 अंक शामिल होंगे।
उदाहरण 1 - निहित रूपांतरण
यहां तारीख . के बीच निहित रूपांतरण का एक उदाहरण दिया गया है और डेटाटाइमऑफ़सेट .
DECLARE @thedate date, @thedatetimeoffset datetimeoffset(7) SET @thedate = '2020-12-01' SET @thedatetimeoffset = @thedate SELECT @thedate AS 'date', @thedatetimeoffset AS 'datetimeoffset';
परिणाम:
+------------+------------------------------------+ | date | datetimeoffset | |------------+------------------------------------| | 2020-12-01 | 2020-12-01 00:00:00.0000000 +00:00 | +------------+------------------------------------+
यह एक अंतर्निहित रूपांतरण है क्योंकि हम इसे स्पष्ट रूप से परिवर्तित करने के लिए रूपांतरण फ़ंक्शन (जैसे नीचे वाले) का उपयोग नहीं कर रहे हैं। इस मामले में, जब हम तिथि . असाइन करने का प्रयास करते हैं, तो SQL सर्वर पर्दे के पीछे एक अंतर्निहित रूपांतरण करता है एक डेटाटाइमऑफ़सेट . के लिए मान चर।
हम देख सकते हैं कि तारीख वैरिएबल में केवल तारीख की जानकारी होती है, जबकि डेटाटाइमऑफ़सेट चर में दिनांक, समय और समय क्षेत्र ऑफ़सेट जानकारी होती है।
जब आप तारीख . के बीच कनवर्ट करते हैं और डेटाटाइमऑफ़सेट(7) (अर्थात 7 के पैमाने का उपयोग करके), समय घटक 00:00:00.0000000 +00:00
पर सेट है . यह भी डिफ़ॉल्ट मान है, इसलिए आप सटीक मान को छोड़ सकते हैं और यह 7 के पैमाने का उपयोग करेगा (जिसके परिणामस्वरूप 34 की सटीकता होती है)। आप चाहें तो सटीकता को कम कर सकते हैं। सटीकता को कम करने से मूल्य को संग्रहीत करने के लिए आवश्यक स्थान की मात्रा भी कम हो सकती है।
स्पष्ट होने के लिए, पैमाना किसी संख्या में दशमलव बिंदु के दाईं ओर अंकों की संख्या है। परिशुद्धता संख्या में अंकों की कुल संख्या है।
उदाहरण 2 - CAST() का उपयोग करके स्पष्ट रूपांतरण
यहां स्पष्ट रूपांतरण का एक उदाहरण दिया गया है। इस मामले में, मैं CAST()
. का उपयोग करता हूं सीधे SELECT
. के अंदर काम करता है तारीख . के बीच स्पष्ट रूप से रूपांतरित होने वाला कथन और डेटाटाइमऑफ़सेट .
DECLARE @thedate date SET @thedate = '2020-12-01' SELECT @thedate AS 'date', CAST(@thedate AS datetimeoffset) AS 'datetimeoffset';
परिणाम:
+------------+------------------------------------+ | date | datetimeoffset | |------------+------------------------------------| | 2020-12-01 | 2020-12-01 00:00:00.0000000 +00:00 | +------------+------------------------------------+
तो हम निहित रूपांतरण के समान परिणाम प्राप्त करते हैं।
हम समय को इस तरह भी समायोजित कर सकते हैं:
DECLARE @thedate date SET @thedate = '2020-12-01' SELECT @thedate AS 'date', DATEADD(hour, 7, CAST(@thedate AS datetimeoffset)) AS 'datetimeoffset';
परिणाम:
+------------+------------------------------------+ | date | datetimeoffset | |------------+------------------------------------| | 2020-12-01 | 2020-12-01 07:00:00.0000000 +00:00 | +------------+------------------------------------+
ध्यान दें कि आप DATEADD()
. का उपयोग नहीं कर सकते हैं समय ऑफसेट घटक को संशोधित करने के लिए कार्य। लेकिन चिंता न करें, वहाँ है इसे संशोधित करने का एक तरीका (कैसे पता लगाने के लिए पढ़ें)।
उदाहरण 3 - CONVERT() का उपयोग करके स्पष्ट रूपांतरण
यहां CONVERT()
. का उपयोग करके स्पष्ट रूपांतरण का एक उदाहरण दिया गया है CAST()
के बजाय फ़ंक्शन करें .
DECLARE @thedate date SET @thedate = '2020-12-01' SELECT @thedate AS 'date', CONVERT(datetimeoffset, @thedate) AS 'datetimeoffset';
परिणाम:
+------------+------------------------------------+ | date | datetimeoffset | |------------+------------------------------------| | 2020-12-01 | 2020-12-01 00:00:00.0000000 +00:00 | +------------+------------------------------------+
और समय को एडजस्ट करना:
DECLARE @thedate date SET @thedate = '2020-12-01' SELECT @thedate AS 'date', DATEADD(hour, 7, CONVERT(datetimeoffset, @thedate)) AS 'datetimeoffset';
परिणाम:
+------------+------------------------------------+ | date | datetimeoffset | |------------+------------------------------------| | 2020-12-01 | 2020-12-01 07:00:00.0000000 +00:00 | +------------+------------------------------------+
उदाहरण 4 - टाइम ऑफ़सेट को संशोधित करें
पिछले उदाहरणों में हमने DATEADD()
. का उपयोग किया था समय मान को संशोधित करने के लिए कार्य करता है। इस फ़ंक्शन का उपयोग दिनांक या समय घटक के किसी भी भाग को संशोधित करने के लिए किया जा सकता है, समय ऑफ़सेट घटक को छोड़कर .
यदि आपको समय ऑफ़सेट को संशोधित करने की आवश्यकता है, तो आप TODATETIMEOFFSET()
. का उपयोग कर सकते हैं समारोह। आप इस फ़ंक्शन का उपयोग मूल तारीख . को बदलने के लिए भी कर सकते हैं एक डेटाटाइमऑफ़सेट . के लिए मान मूल्य। यह फ़ंक्शन एक दिनांक मान को स्वीकार करता है (जो कि datetime2 . को हल कर सकता है) value), और एक ऑफ़सेट मान.
यहां एक उदाहरण दिया गया है:
DECLARE @thedate date, @thedatetimeoffset datetimeoffset SET @thedate = '2020-12-01' SET @thedatetimeoffset = TODATETIMEOFFSET(@thedate, '+07:00') SELECT @thedate AS 'date', @thedatetimeoffset AS 'datetimeoffset';
परिणाम:
+------------+------------------------------------+ | date | datetimeoffset | |------------+------------------------------------| | 2020-12-01 | 2020-12-01 00:00:00.0000000 +07:00 | +------------+------------------------------------+
और यहां SELECT
. में फ़ंक्शन का उपयोग करने का एक उदाहरण दिया गया है कथन:
DECLARE @thedate date = '2020-12-01' SELECT @thedate AS 'date', TODATETIMEOFFSET(@thedate, '+07:00') AS 'datetimeoffset';
परिणाम:
+------------+------------------------------------+ | date | datetimeoffset | |------------+------------------------------------| | 2020-12-01 | 2020-12-01 00:00:00.0000000 +07:00 | +------------+------------------------------------+
TODATETIMEOFFSET()
फ़ंक्शन एक डेटाटाइमऑफ़सेट . भी स्वीकार करता है value इसके पहले पैरामीटर के रूप में, इसलिए आप इसका उपयोग मौजूदा डेटाटाइमऑफ़सेट . को संशोधित करने के लिए भी कर सकते हैं यदि आवश्यक हो तो मान।
उदाहरण:
DECLARE @thedate date, @thedatetimeoffset datetimeoffset(7) SET @thedate = '2020-12-01' SET @thedatetimeoffset = @thedate SELECT @thedate AS 'date', @thedatetimeoffset AS 'datetimeoffset', TODATETIMEOFFSET(@thedatetimeoffset, '+07:00') AS 'Modified';
परिणाम:
+------------+------------------------------------+------------------------------------+ | date | datetimeoffset | Modified | |------------+------------------------------------+------------------------------------| | 2020-12-01 | 2020-12-01 00:00:00.0000000 +00:00 | 2020-12-01 00:00:00.0000000 +07:00 | +------------+------------------------------------+------------------------------------+