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

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

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

स्मॉलडेटटाइम डेटा प्रकार में कोई आंशिक सेकंड नहीं होता है, और इसका सेकंड घटक हमेशा शून्य (:00) पर सेट होता है। इसकी सटीकता निकटतम मिनट तक है।

डेटाटाइम2 दूसरी ओर डेटा प्रकार, आपको 0 से 7 तक एक भिन्नात्मक सेकंड सटीक निर्दिष्ट करने की अनुमति देता है। यदि आप इसे निर्दिष्ट नहीं करते हैं, तो यह 7 (डिफ़ॉल्ट) का उपयोग करेगा। यदि आप शून्य निर्दिष्ट करते हैं (0 ), इसकी सटीकता निकटतम सेकंड तक होगी।

जब आप एक छोटे दिनांक समय . को रूपांतरित करते हैं datetime2 . के लिए मान , घंटे और मिनट कॉपी किए जाते हैं। सेकंड और भिन्नात्मक सेकंड 0 पर सेट होते हैं।

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

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

DECLARE 
  @thesmalldatetime smalldatetime,
  @thedatetime2 datetime2;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SET @thedatetime2 = @thesmalldatetime;
SELECT 
  @thesmalldatetime AS 'smalldatetime',
  @thedatetime2 AS 'datetime2';

परिणाम:

+---------------------+-----------------------------+
| smalldatetime       | datetime2                   |
|---------------------+-----------------------------|
| 2025-05-21 10:16:00 | 2025-05-21 10:16:00.0000000 |
+---------------------+-----------------------------+

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

इस उदाहरण में हम देख सकते हैं कि स्मॉलडेटटाइम मान में भिन्नात्मक सेकंड शामिल नहीं हैं, सेकंड को शून्य पर सेट कर दिया गया है, और मिनट को गोल कर दिया गया है।

इस मामले में, datetime2 मान 7 की शुद्धता का उपयोग करता है। ऐसा इसलिए है क्योंकि 7 डिफ़ॉल्ट मान है। मैंने सटीकता निर्दिष्ट नहीं की और इसलिए डिफ़ॉल्ट मान का उपयोग किया गया था। इसके परिणामस्वरूप भिन्नात्मक भाग में 7 शून्य का उपयोग किया जा रहा है।

उदाहरण 2 - भिन्नात्मक भाग निकालें

यदि आवश्यक हो तो आप भिन्नात्मक सेकंड निकाल सकते हैं। ऐसा करने के लिए, बस datetime2(0) . का उपयोग करें चर घोषित करते समय।

DECLARE 
  @thesmalldatetime smalldatetime,
  @thedatetime2 datetime2(0);
SET @thesmalldatetime = '2025-05-21 10:15:30';
SET @thedatetime2 = @thesmalldatetime;
SELECT 
  @thesmalldatetime AS 'smalldatetime',
  @thedatetime2 AS 'datetime2';

परिणाम:

+---------------------+---------------------+
| smalldatetime       | datetime2           |
|---------------------+---------------------|
| 2025-05-21 10:16:00 | 2025-05-21 10:16:00 |
+---------------------+---------------------+

तो इस मामले में दोनों डेटा प्रकार समान मान लौटाते हैं। हालांकि, अंतर यह है कि datetime2 दूसरे को सटीकता प्रदान करने की क्षमता रखता है (smalldatetime . की तुलना में) मिनट तक की सटीकता)।

उदाहरण:

DECLARE 
  @thesmalldatetime smalldatetime,
  @thedatetime2 datetime2(0);
SET @thesmalldatetime = '2025-05-21 10:15:30';
SET @thedatetime2 = @thesmalldatetime;
SELECT 
  DATEADD(second, 30, @thesmalldatetime) AS 'smalldatetime',
  DATEADD(second, 30, @thedatetime2) AS 'datetime2';

परिणाम:

+---------------------+---------------------+
| smalldatetime       | datetime2           |
|---------------------+---------------------|
| 2025-05-21 10:17:00 | 2025-05-21 10:16:30 |
+---------------------+---------------------+

इस उदाहरण में मैंने DATEADD() . का उपयोग किया है प्रत्येक मान में 30 सेकंड जोड़ने का कार्य करता है। हालांकि, प्रत्येक डेटा प्रकार एक अलग परिणाम देता है। डेटाटाइम2 डेटा प्रकार सेकंड भाग का सम्मान करता है और 100% सटीकता के साथ सही परिणाम प्रदान करता है। स्मॉलडेटटाइम दूसरी ओर टाइप करें, इसे निकटतम मिनट तक पूर्णांकित किया जाता है (जबकि सेकंड का भाग शून्य पर रहता है)।

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

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

DECLARE @thesmalldatetime smalldatetime;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  CAST(@thesmalldatetime AS datetime2(0)) AS 'datetime2(0)';

परिणाम:

+---------------------+---------------------+
| thesmalldatetime    | datetime2(0)        |
|---------------------+---------------------|
| 2025-05-21 10:16:00 | 2025-05-21 10:16:00 |
+---------------------+---------------------+

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

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

DECLARE @thesmalldatetime smalldatetime;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  CONVERT(datetime2(0), @thesmalldatetime) AS 'datetime2(0)';

परिणाम:

+---------------------+---------------------+
| thesmalldatetime    | datetime2(0)        |
|---------------------+---------------------|
| 2025-05-21 10:16:00 | 2025-05-21 10:16:00 |
+---------------------+---------------------+

  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 पैरामीटर में स्ट्रिंग ऐरे को SQL में IN क्लॉज़ में कैसे पास करें?

  2. संग्रहीत प्रक्रिया जो डेटा को csv फ़ाइलों में निर्यात करती है केवल एक फ़ाइल को निर्यात करती है

  3. टीएसक्यूएल पिवट मल्टीपल कॉलम्स

  4. INSTR () SQL सर्वर में समतुल्य

  5. SQL सर्वर में इनर जॉइन बनाम लेफ्ट जॉइन परफॉर्मेंस