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

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

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

डेटाटाइम . को रूपांतरित करने के लाभों में से एक समय . के लिए मान यह है कि आप भंडारण आकार को 8 बाइट्स से घटाकर 3, 4, या 5 बाइट्स कर देते हैं (आपके द्वारा समय के लिए उपयोग की जाने वाली सटीकता के आधार पर) मूल्य)। कड़ाई से बोलते हुए, समय 4, 5, या 6 बाइट्स का उपयोग करता है, क्योंकि इसकी शुद्धता को स्टोर करने के लिए एक अतिरिक्त बाइट का उपयोग किया जाता है।

जब आप किसी डेटाटाइम . को रूपांतरित करते हैं समय . के लिए मान , मान का केवल समय भाग कॉपी किया जाता है। सटीक परिणाम उस भिन्नात्मक सेकंड की सटीकता पर निर्भर करेगा जिसे आप समय . को निर्दिष्ट करते हैं . जब समय सटीकता डेटाटाइम . से कम है सटीक, भिन्नात्मक सेकंड को समय . फिट करने के लिए गोल किया जाता है सटीक।

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

समय दूसरी ओर, डेटा प्रकार, आपको 0 से 7 तक एक भिन्नात्मक सेकंड सटीकता निर्दिष्ट करने की अनुमति देता है। यह time(n का उपयोग करके प्राप्त किया जाता है। ) सिंटैक्स, जहां n 0 से 7 तक का पैमाना है। यदि आप इसे निर्दिष्ट नहीं करते हैं, तो यह 7 का उपयोग करेगा, जो 100 नैनोसेकंड की सटीकता प्रदान करता है।

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

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

DECLARE 
  @thedatetime datetime, 
  @thetime time;
SET @thedatetime = '2025-05-21 10:15:30.123';
SET @thetime = @thedatetime;
SELECT 
  @thedatetime AS 'datetime',
  @thetime AS 'time';

परिणाम:

+-------------------------+------------------+
| datetime                | time             |
|-------------------------+------------------|
| 2025-05-21 10:15:30.123 | 10:15:30.1233333 |
+-------------------------+------------------+

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

इस परिणाम के बारे में सबसे स्पष्ट बात यह है कि समय मान में दिनांक शामिल नहीं है। यह अपेक्षित है, क्योंकि समय डेटा प्रकार केवल समय मान संग्रहीत करने के लिए है, दिनांक मान नहीं।

हम यह भी देख सकते हैं कि समय वेरिएबल में अधिक भिन्नात्मक सेकंड की सटीकता होती है, और हम 1233333 के भिन्नात्मक भाग के साथ समाप्त होते हैं (बनाम 123 डेटाटाइम . के लिए मूल्य)। ऐसा इसलिए होता है क्योंकि समय मान 7 के डिफ़ॉल्ट पैमाने का उपयोग कर रहा है (क्योंकि हमने स्पष्ट रूप से कोई पैमाना निर्दिष्ट नहीं किया है)।

उदाहरण 2 - गोलाई

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

यहां एक उदाहरण दिया गया है:

DECLARE 
  @thedatetime datetime, 
  @thetime time;
SET @thedatetime = '2025-05-21 10:15:30.125';
SET @thetime = @thedatetime;
SELECT 
  @thedatetime AS 'datetime',
  @thetime AS 'thetime';

परिणाम:

+-------------------------+------------------+
| datetime                | thetime          |
|-------------------------+------------------|
| 2025-05-21 10:15:30.127 | 10:15:30.1266667 |
+-------------------------+------------------+

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

समय मान हालांकि, भिन्नात्मक सेकंड को 1266667 . पर सेट करें .

यदि हम केवल प्रारंभिक मान को समय . पर सेट करते हैं सबसे पहले, इसका भिन्नात्मक भाग 1250000 वापस आ जाता ।

उदाहरण 3 - सटीक/सटीकता

जैसा कि बताया गया है, समय डेटा प्रकार आपको भिन्नात्मक सेकंड सटीक निर्दिष्ट करने की अनुमति देता है। यदि आप ऐसा नहीं करते हैं, तो यह 7 का उपयोग करता है (इसलिए, पिछला उदाहरण 7 का उपयोग करता है)।

आप समय(n . का उपयोग करके इसे संशोधित कर सकते हैं ) वाक्य - विन्यास। इसलिए, मैं समय(7) . का उपयोग कर सकता था पिछले उदाहरणों के लिए समान परिणाम प्राप्त करने के लिए।

इस उदाहरण में, मैं समय(0) . का उपयोग करके भिन्नात्मक सेकंड को पूरी तरह से हटा देता हूं :

DECLARE 
  @thedatetime datetime, 
  @thetime time(0);
SET @thedatetime = '2025-05-21 10:15:30.125';
SET @thetime = @thedatetime;
SELECT 
  @thedatetime AS 'datetime',
  @thetime AS 'time';

परिणाम:

+-------------------------+----------+
| datetime                | time     |
|-------------------------+----------|
| 2025-05-21 10:15:30.127 | 10:15:30 |
+-------------------------+----------+

जब हम ऐसा करते हैं, तो समय . का संग्रहण आकार डेटाटाइम . के लिए 8 बाइट्स के विपरीत मान को घटाकर 3 बाइट्स (सटीक सहित 4 बाइट्स) कर दिया गया है मूल्य।

ध्यान रखें कि मूल मान से कम सटीकता का उपयोग करने से परिणाम को निर्दिष्ट सटीकता के अनुरूप गोल किया जाएगा।

उदाहरण:

DECLARE 
  @thedatetime datetime, 
  @thetime time(0);
SET @thedatetime = '2025-05-21 10:15:30.525';
SET @thetime = @thedatetime;
SELECT 
  @thedatetime AS 'datetime',
  @thetime AS 'time';

परिणाम:

+-------------------------+----------+
| datetime                | time     |
|-------------------------+----------|
| 2025-05-21 10:15:30.527 | 10:15:31 |
+-------------------------+----------+

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

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

DECLARE @thedatetime datetime;
SET @thedatetime = '2025-05-21 10:15:30.125';
SELECT 
  @thedatetime AS 'datetime',
  CAST(@thedatetime AS time(0)) AS 'time(0)';

परिणाम:

+-------------------------+-----------+
| datetime                | time(0)   |
|-------------------------+-----------|
| 2025-05-21 10:15:30.127 | 10:15:30  |
+-------------------------+-----------+

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

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

DECLARE @thedatetime datetime;
SET @thedatetime = '2025-05-21 10:15:30.125';
SELECT 
  @thedatetime AS 'datetime',
  CONVERT(time(0), @thedatetime) AS 'time(0)';

परिणाम:

+-------------------------+-----------+
| datetime                | time(0)   |
|-------------------------+-----------|
| 2025-05-21 10:15:30.127 | 10:15:30  |
+-------------------------+-----------+

  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 सर्वर ऑपरेटिंग सिस्टम त्रुटि 5:5 (प्रवेश निषेध है।)

  2. क्या SQL सर्वर के बिना .mdf डेटाबेस को एक्सेस करना संभव है?

  3. रिलेशनल डेटाबेस में कस्टम फ़ील्ड के लिए डिज़ाइन पैटर्न

  4. SQL सर्वर में char, nchar, varchar और nvarchar में क्या अंतर है?

  5. SQL सर्वर में स्ट्रिंग और नल मानों को कैसे संयोजित करें