Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर (T-SQL उदाहरण) में 'डेटाटाइमऑफ़सेट' को 'डेटाटाइम' में बदलें

इस लेख में डेटाटाइमऑफ़सेट . को रूपांतरित करने के उदाहरण हैं डेटाटाइम . के लिए मान एसक्यूएल सर्वर में।

जब आप किसी डेटाटाइमऑफ़सेट . को रूपांतरित करते हैं डेटाटाइम . के लिए मान , दिनांक और समय मानों की प्रतिलिपि बनाई जाती है, और समय क्षेत्र ऑफ़सेट को छोटा कर दिया जाता है। जब डेटाटाइमऑफ़सेट . की भिन्नात्मक सटीकता मान तीन अंकों से अधिक है, मान छोटा कर दिया गया है।

डेटाटाइमऑफ़सेट डेटा प्रकार आपको 0 से 7 तक एक भिन्नात्मक सेकंड सटीकता निर्दिष्ट करने की अनुमति देता है। यह datetimeoffset(n) का उपयोग करके किया जाता है। वाक्य - विन्यास। यदि आप इसे निर्दिष्ट नहीं करते हैं, तो यह 7 (डिफ़ॉल्ट) का उपयोग करेगा। इसमें टाइम ज़ोन ऑफ़सेट भी है। उपयोग की जा रही सटीकता के आधार पर इस डेटा प्रकार का भंडारण आकार या तो 8, 9 या 10 बाइट्स है। एक अन्य बाइट का उपयोग सटीकता को संग्रहीत करने के लिए किया जाता है, इसलिए यह उन आंकड़ों में 1 बाइट जोड़ता है।

डेटाटाइम दूसरी ओर, डेटा प्रकार में इसके भिन्नात्मक सेकंड भाग के लिए अधिकतम 3 अंक होते हैं। इसकी सटीकता .000, .003, या .007 सेकंड की वृद्धि के लिए गोल है। इस डेटा प्रकार में कोई समय क्षेत्र जागरूकता नहीं है, और इसलिए, कोई समय क्षेत्र ऑफ़सेट नहीं है। इसका भंडारण आकार 8 बाइट्स है।

उदाहरण 1 - निहित रूपांतरण

यहां डेटाटाइमऑफ़सेट . के बीच निहित रूपांतरण का एक उदाहरण दिया गया है और डेटाटाइम .

DECLARE 
  @thedatetimeoffset datetimeoffset, 
  @thedatetime datetime;
SET @thedatetimeoffset = '2025-05-21 10:15:30.1234567 +07:00';
SET @thedatetime = @thedatetimeoffset;
SELECT 
  @thedatetimeoffset AS 'datetimeoffset',
  @thedatetime AS 'datetime';

परिणाम:

+------------------------------------+-------------------------+
| datetimeoffset                     | datetime                |
|------------------------------------+-------------------------|
| 2025-05-21 10:15:30.1234567 +07:00 | 2025-05-21 10:15:30.123 |
+------------------------------------+-------------------------+

यह एक अंतर्निहित रूपांतरण है क्योंकि हम इसे स्पष्ट रूप से परिवर्तित करने के लिए रूपांतरण फ़ंक्शन (जैसे नीचे वाले) का उपयोग नहीं कर रहे हैं। इस मामले में, जब हम डेटाटाइमऑफ़सेट असाइन करने का प्रयास करते हैं, तो SQL सर्वर पर्दे के पीछे एक अंतर्निहित रूपांतरण करता है। एक डेटाटाइम . के लिए मान चर।

हम देख सकते हैं कि डेटाटाइम वेरिएबल में फ्रैक्शनल सेकंड्स की सटीकता कम होती है, और हमारे पास 123 . का एक फ्रैक्शनल पार्ट होता है भले ही मूल भिन्नात्मक भाग 1234567 . था .

इस मामले में, कोई गोलाई नहीं की गई थी।

हम यह भी देखते हैं कि समय क्षेत्र ऑफसेट को छोटा कर दिया गया था। डेटाटाइम डेटा प्रकार में कोई समय क्षेत्र जागरूकता नहीं है।

इस रूपांतरण में, डेटाटाइमऑफ़सेट के लिए संग्रहण आकार 10 बाइट्स से कम हो गया है (यदि आप अतिरिक्त बाइट शामिल करते हैं जो सटीकता को संग्रहीत करता है तो 11 बाइट्स) , डेटाटाइम . के लिए 8 बाइट्स तक . हालांकि, अगर डेटाटाइमऑफ़सेट value ने 0 और 2 के बीच के पैमाने का उपयोग किया था, यह केवल 8 बाइट्स (9 परिशुद्धता सहित) का उपयोग करता।

यदि उसने 3 के पैमाने का उपयोग किया होता (डेटाटाइम . के समतुल्य) value), भंडारण का आकार 9 बाइट्स (सटीकता के साथ 10) होता। हालांकि, इसकी सटीकता डेटाटाइम . से अधिक होती . बेशक, जैसे ही हम इसे डेटाटाइम . में बदलते हैं, सटीकता कम हो जाएगी ।

उदाहरण 2 - सटीक/सटीकता और गोलाई

डेटाटाइम डेटा प्रकार .000, .003, या .007 सेकंड की वृद्धि के लिए गोल है। यहां तक ​​​​कि अगर आप इसे स्पष्ट रूप से किसी अन्य मान पर सेट करते हैं, तो इसे गोल किया जाएगा।

यह किसी अन्य डेटा प्रकार से कनवर्ट करते समय भी लागू होता है (जैसे कि हम यहां क्या कर रहे हैं)।

यहां एक उदाहरण दिया गया है जो दर्शाता है कि मेरा क्या मतलब है।

DECLARE 
  @thedatetimeoffset datetimeoffset, 
  @thedatetime datetime;
SET @thedatetimeoffset = '2025-05-21 10:15:30.1250000 +07:00';
SET @thedatetime = @thedatetimeoffset;
SELECT 
  @thedatetimeoffset AS 'datetimeoffset',
  @thedatetime AS 'datetime';

परिणाम:

+------------------------------------+-------------------------+
| datetimeoffset                     | datetime                |
|------------------------------------+-------------------------|
| 2025-05-21 10:15:30.1250000 +07:00 | 2025-05-21 10:15:30.127 |
+------------------------------------+-------------------------+

इस उदाहरण में, मैंने डेटाटाइमऑफ़सेट . के भिन्नात्मक सेकंड सेट किए हैं मान 1250000 लेकिन डेटाटाइम इसे 127 . तक गोल करें (क्योंकि इसे केवल .000, .003, या .007 सेकंड की वृद्धि के लिए पूर्णांकित किया जा सकता है)।

उदाहरण 3 - CAST() का उपयोग करके स्पष्ट रूपांतरण

यहां स्पष्ट रूपांतरण का एक उदाहरण दिया गया है। इस मामले में, मैं CAST() . का उपयोग करता हूं सीधे SELECT . के अंदर काम करता है डेटाटाइमऑफ़सेट . के बीच स्पष्ट रूप से कनवर्ट करने के लिए कथन और डेटाटाइम .

DECLARE @thedatetimeoffset datetimeoffset;
SET @thedatetimeoffset = '2025-05-21 10:15:30.1234567 +07:00';
SELECT 
  @thedatetimeoffset AS 'datetimeoffset',
  CAST(@thedatetimeoffset AS datetime) AS 'datetime';

परिणाम:

+------------------------------------+-------------------------+
| datetimeoffset                     | datetime                |
|------------------------------------+-------------------------|
| 2025-05-21 10:15:30.1234567 +07:00 | 2025-05-21 10:15:30.123 |
+------------------------------------+-------------------------+

उदाहरण 4 - CONVERT() का उपयोग करके स्पष्ट रूपांतरण

यहां CONVERT() . का उपयोग करके स्पष्ट रूपांतरण का एक उदाहरण दिया गया है CAST() के बजाय फ़ंक्शन करें .

DECLARE @thedatetimeoffset datetimeoffset;
SET @thedatetimeoffset = '2025-05-21 10:15:30.1234567 +07:00';
SELECT 
  @thedatetimeoffset AS 'datetimeoffset',
  CONVERT(datetime, @thedatetimeoffset) AS 'datetime';

परिणाम:

+------------------------------------+-------------------------+
| datetimeoffset                     | datetime                |
|------------------------------------+-------------------------|
| 2025-05-21 10:15:30.1234567 +07:00 | 2025-05-21 10:15:30.123 |
+------------------------------------+-------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में DATALENGTH () क्या है?

  2. टेक्स्ट सेट करें SQL सर्वर में काम नहीं कर रहा है? इसे देखो।

  3. SQL सर्वर प्रबंधन स्टूडियो में वास्तविक CSV प्रारूप में निर्यात आउटपुट कैसे प्राप्त करें?

  4. SQL सर्वर में स्थिति के आधार पर गणना करें

  5. SQL सर्वर:डेटाबेस पुनर्स्थापित करने की स्थिति में अटका हुआ है