परिचय
डेटा प्रकार वे विशेषताएँ हैं जो उस प्रकार के डेटा को निर्दिष्ट करती हैं जो ऑब्जेक्ट जैसे कॉलम, स्थानीय चर, अभिव्यक्ति और पैरामीटर धारण कर सकते हैं। RDBMS दुनिया भर में, डेटा प्रकारों को आमतौर पर स्ट्रिंग, संख्यात्मक और दिनांक डेटा प्रकारों में समूहीकृत किया जाता है।
T-SQL 6 दिनांक और समय डेटा प्रकारों का समर्थन करता है, अर्थात्:
- दिनांक समय
- स्मॉलडेटटाइम
- तारीख
- समय
- दिनांक2
- डेटाटाइमऑफ़सेट
पहले दो डेटा प्रकारों को नए के पुराने संस्करण के रूप में माना जाता है। इस लेख में, हम दिनांक डेटा प्रकारों पर और विशेष रूप से डेटाटाइम . पर ध्यान केंद्रित करते हैं और डेटाटाइम2 SQL सर्वर में उपलब्ध डेटा प्रकार। तालिका 1 SQL सर्वर में उपलब्ध विभिन्न दिनांक और समय डेटा प्रकारों का विवरण देती है।
[टेबल आईडी=59 /]
टैब 1 दिनांक और समय डेटा प्रकार
डेटटाइम और डेटटाइम2
डेटाटाइम एक डेटाटाइप है जो 24 घंटे के घड़ी प्रारूप में समय के साथ तारीख को जोड़ता है। डेटाटाइम डेटा प्रकार में समर्थित दिनांक सीमा टैब 1 में दिखाई गई है और इसकी सटीकता लगभग 3 मिलीसेकंड है।
डेटाटाइम 2 डेटाटाइम डेटा प्रकार का विस्तार है। यह संभावित मूल्यों की एक विस्तृत श्रृंखला को समायोजित करता है और इसकी सटीकता 100 नैनोसेकंड है जो अपने पूर्ववर्ती की तुलना में काफी बेहतर है। डेटाटाइम 2 डेटा प्रकार का एक अन्य महत्वपूर्ण पहलू यह है कि आपके द्वारा चुनी गई सटीकता के आधार पर आवश्यक भंडारण 6 से 8 बाइट्स तक होता है।
- सेकंड घटक पर तीन दशमलव स्थानों की अनुमति देकर आप 1 मिलीसेकंड की सटीकता प्राप्त कर सकते हैं। इस प्रकार प्रत्येक मान छह बाइट्स की खपत करेगा।
- सेकंड घटक पर सात दशमलव स्थानों की अनुमति देकर आप 100 नैनोसेकंड की सटीकता प्राप्त कर सकते हैं। इस प्रकार प्रत्येक मान आठ बाइट्स की खपत करेगा।
प्रदर्शन
गलत दिनांक मान डालें
हम कुछ प्रदर्शनों को पूरा करने के लिए सूची 1 में दिखाए गए विवरण के साथ एक तालिका बनाते हैं जो बताता है कि डेटाटाइम में हेरफेर कैसे किया जाता है और डेटाटाइम2 डेटा प्रकार।
-- Listing 1 Create Table and insert Rows -- Create Table with Data Types use Practice2017 go create table staffers ( fname varchar(50), lname varchar(50), JobTitle varchar(100), DOB datetime, PreciseDOB datetime2, LastLoginTime time) go
फिर हम तालिका को एक पंक्ति से भरने की कोशिश करते हैं जैसा कि सूची 2 में दिखाया गया है लेकिन हमें चित्र 1 में दिखाई गई त्रुटि मिलती है। त्रुटि संदेश में मुख्य शब्द "आउट-ऑफ-रेंज" मान है। यह क्या कह रहा है कि उसका मूल्य जो हम डालने का प्रयास कर रहे हैं वह 01-जनवरी-1753 से या तो कम है या इससे अधिक 31-दिसंबर-9999 . इस मामले में, समस्या यह है कि हमने 'YYYYMMDD hh:mm:ss.nnn के अनुशंसित प्रविष्टि प्रारूप का उपयोग नहीं किया है। ' (तालिका 1 देखें)। मान पढ़ना '06101979 ', SQL सर्वर 0610 को वर्ष मानता है (YYYY से मेल खाता है)। यह त्रुटि datetime2 डेटा प्रकार के लिए नहीं डाली गई है क्योंकि datetime2 की सीमा वर्ष 0001 में व्यापक है।
-- Listing 2 Insert Rows with Wrong Entry Format insert into staffers values ( 'Kenneth' ,'Igiri' ,'Database Administrator' ,'06101979' ,'06101979' ,'8:00 AM' )
चित्र 1 डेटाटाइम कॉलम के लिए लौटाई गई त्रुटि
सही दिनांक मान डालें
जैसा कि लिस्टिंग 3 में दिखाया गया है, हम डेटाटाइम कॉलम के लिए सही प्रविष्टि प्रारूप दर्ज करके समस्या को ठीक करने का प्रयास करते हैं। जब हम फिर से स्टेटमेंट चलाते हैं, तो हमें चित्र 2 में दिखाई गई त्रुटि मिलती है। यह त्रुटि अनिवार्य रूप से उसी विफलता के कारण होती है। प्रवेश प्रारूप विनिर्देशों। हालाँकि, समस्या दिनांक के दूसरे भाग '06101979 . के साथ है ' जो प्रविष्टि प्रारूप 'YYYYMMDD hh:mm:ss.nnn से मेल खाता है '। इस मामले में, SQL सर्वर ने मान लिया 19 एक महीना है और 79 महीने का एक दिन है। इस निहित रूपांतरण का प्रयास विफल हो जाता है क्योंकि कोई भी पूर्ववर्ती कथन सत्य नहीं है।
-- Listing 3 Insert Rows with One Correct Entry Format insert into staffers values ( 'Kenneth' ,'Igiri' ,'Database Administrator' ,'19791006' ,'01061979' ,'8:00 AM' )
चित्र 2 डेटाटाइम2 कॉलम के लिए लौटाई गई त्रुटि
सूची 4 हमें अंतिम अभिकथन प्रदर्शित करने की अनुमति देती है। मान 01101201 डेटाटाइम 2 के लिए सीमा में फिट बैठता है और हम पंक्ति डालने में सक्षम हैं। जैसा कि हम अंजीर 3 में देखते हैं, यह मान 1 दिसंबर 0110 में बदल जाता है।
-- Listing 4: Insert Rows with Correct Date Format insert into staffers values ( 'Kenneth' ,'Igiri' ,'Database Administrator' ,'19791006' ,'01101201' ,'8:00 AM')
-- Listing 5: Insert Rows with All Correct Entry Format insert into staffers values ( 'Kenneth' ,'Igiri' ,'Database Administrator' ,'19791006' ,'19791006' ,'8:00 AM' )
डेटा की पुष्टि करना
चित्र 3 डेटा सेट को क्वेरी करना
जब हम कर्मचारी तालिका को क्वेरी करते हैं तो हम डेटाटाइम 2 विकल्प की तुलना में डेटाटाइम डेटा प्रकार की सटीकता को स्पष्ट रूप से देखते हैं। आइए कुछ और भयावह चीज़ों पर चलते हैं:भाषा सेटिंग्स। लिस्टिंग 6 पर एक नज़र डालें। हम दिनांक प्रारूप 06/10/1979 का उपयोग करके ठीक उसी रिकॉर्ड को सम्मिलित कर रहे हैं। . जब हम भाषा को ब्रिटिश . पर सेट करते हैं तो यह प्रारूप भाषा तटस्थ नहीं है पहले स्टेटमेंट में और फिर us_english . में दूसरे में हम पाते हैं कि हमने वास्तव में दो अलग-अलग तिथियां डाली हैं, हालांकि हमारे कच्चे मूल्य समान हैं। यही कारण है कि डेटाटाइम . के साथ व्यवहार करते समय हमेशा अनुशंसित प्रविष्टि प्रारूप का उपयोग करना बहुत महत्वपूर्ण है और डेटाटाइम2 ।
-- Listing 6: Impact of Language Settings set language british insert into staffers values ( 'Kenneth' ,'Igiri' ,'Database Administrator' ,'06/10/1979' ,'06/10/1979' ,'8:00 AM' ) set language us_english insert into staffers values ( 'Kenneth' ,'Igiri' ,'Database Administrator' ,'06/10/1979' ,'06/10/1979' ,'8:00 AM' )
अंजीर। 4 पूछताछ करने वाले कर्मचारी
ब्रिटिश . के रूप में भाषा सेटिंग के साथ , SQL सर्वर पहले दो आंकड़ों को दिन के रूप में व्याख्या करता है लेकिन भाषा सेटिंग के साथ us_english , SQL सर्वर पहले दो आंकड़ों की एक महीने के रूप में व्याख्या करता है। एक आखिरी बात जिसका हमें यहां उल्लेख करने की आवश्यकता है, वह यह है कि हमारे रिकॉर्ड डालने में, हमने समय घटक निर्दिष्ट नहीं किया था, इस प्रकार SQL सर्वर स्वचालित रूप से मानता है कि निर्दिष्ट तिथि के मध्यरात्रि का मतलब था।
निष्कर्ष
इस लेख में, हमने सीखा है कि डेटाटाइम और डेटाटाइम 2 डेटा प्रकार क्या दिखते हैं, उनके मुख्य अंतर और यह सुनिश्चित करने के लिए कि आप इन डेटा प्रकारों का उपयोग करते समय सही तिथि दर्ज कर रहे हैं। इसके दौरान, हमने दो त्रुटियों की भी जांच की है, जो एक डेवलपर इन डेटा प्रकारों के साथ काम करते समय चला सकता है।
संदर्भ
- एसक्यूएल डेटा प्रकार
- बेन-गण, आई. (2016) टी-एसक्यूएल फंडामेंटल्स। पीपी74-78. माइक्रोसॉफ्ट प्रेस।