2013-03-19 7 views
7

के बजाय अलग दिनांक और समय का उपयोग कब करें यदि मैं दिनांक और समय स्टोर करना चाहता हूं, तो क्या उन्हें अलग दिनांक और समय में स्टोर करना बेहतर है या एक डेटाटाइम का उपयोग करना बेहतर है?एक ही डेटाटाइम

हमें एक ही समय के बजाय दिनांक और समय का उपयोग कब करना चाहिए?

मैं तारीख या समय का उपयोग कर अपने प्रश्नों को फ़िल्टर करना चाहता हूं।

+1

इस पर निर्भर करता है कि आपको वास्तव में इसका उपयोग करने की आवश्यकता है। डिफ़ॉल्ट रूप से एक का उपयोग करने के लिए कोई अच्छा कारण नहीं है। – CathalMF

उत्तर

5

SQL सर्वर 2008 में आपके पास date and time data types है इसलिए यह एक गैर समस्या बन जाती है।

यदि यह अच्छी पसंद है तो यह वास्तव में आपके व्यापार पर निर्भर करता है और आप कैसे डेटा पूछेंगे।

उदाहरण के लिए यदि आप एक अलग Date और Time स्तंभ का उपयोग कर देगा यह तेज

+0

यह समय-समय पर अंतराल के लिए त्वरित प्रश्नों के साथ एक दिलचस्प बिंदु है। क्या आपके पास यह साबित करने के लिए कोई डेटा है या यह एक धारणा reg सूचकांक-संरचनाओं पर आधारित है? –

+1

समय-समय पर एक डेटाटाइम कॉलम फ़िल्टरिंग का उपयोग करके डेटा को क्वेरी करना अधिक जटिल होगा क्योंकि इसे स्कैन –

+0

हाँ की आवश्यकता होगी, मैं किसी भी समय या किसी भी तारीख के लिए दिनांक का उपयोग करके अपने डेटा से पूछताछ करना चाहता हूं। – Harke

1

तकनीकी दृष्टि से, एक तिथि हमेशा एक समय और समय हमेशा एक तिथि होती है। यदि आप डेटाबेस में समय संग्रहीत करते हैं तो इसकी डिफ़ॉल्ट तिथि होती है जो इसे लागू होती है। यदि आप केवल तारीख को स्टोर करते हैं तो उस तिथि पर मध्यरात्रि होगी (00:00:00)।

मेरी राय में यह दोनों एक साथ स्टोर करने के लिए हमेशा सर्वोत्तम अभ्यास है क्योंकि फ़ंक्शन को उचित रूप से एक ही फ़ील्ड पर लागू किया जा सकता है, चाहे आपको दिनांक या समय पर तुलना करने की आवश्यकता हो।

+2

एएच - नहीं। यह संदर्भ पर निर्भर करता है कि संदर्भ क्या है। उदाहरण के लिए, एक रेस्तरां के व्यवसाय के घंटों में समय के घटकों के साथ कोई निश्चित दिनांक संदर्भ नहीं होता है, और वेलेंटाइन दिवस 14 फरवरी को किसी भी विशेष समय के बिना होता है। –

+0

मैं अपनी पोस्ट अपडेट करूंगा। मेरा मतलब तकनीकी स्तर पर था, हालांकि उम्मीद थी कि दिनांक और समय के शब्दों पर इस्तेमाल पूंजीकरण द्वारा स्पष्ट होगा। – aaroncatlin

8

जब आप समय में एक पल के बारे में बात कर रहे हैं, एक है कि क्या किसी भी दिन के लिए के बीच 1 से 2 बजे के सभी आदेशों स्थानों जानना चाहते हैं सार्वभौमिक पल, या किसी के स्थानीय कैलेंडर पर एक विशिष्ट दिनांक और समय, आप datetime का उपयोग करते हैं। यदि आप यह सुनिश्चित करना चाहते हैं कि पर्यवेक्षक के बावजूद आप समय पर एक सटीक पल के बारे में बात कर रहे हैं, तो आप datetimeoffset का उपयोग करें।

यदि आप केवल date संग्रहित कर रहे हैं तो आपका मतलब समय घटक के बिना दिनांक है, जिसका अर्थ है "इस तिथि पर किसी भी समय"।

यदि आप केवल time संग्रहित कर रहे हैं तो आप का मतलब दिनांक घटक के बिना एक समय है, जिसका अर्थ है "इस समय किसी भी तारीख पर" या "इस समय किसी अन्य माध्यम से निर्धारित तिथि पर"।

date और time दोनों को रखने के लिए कोई व्यावहारिक purpouse नहीं है जो एक ही पंक्ति पर बैठे एक ही चीज़ के बारे में हैं। इसके लिए बस datetime का उपयोग करें।

1
दिनांक और समय को अलग करने के बारे में कुछ भी नहीं शानदार

,

बेहतर आप एक ही कॉलम में दिनांक और समय बचाने के लिए,

यहाँ वे एक ही मुद्दे पर चर्चा की है यह जाँच: are-there-any-good-reasons-for-keeping-date-and-time-in-separate-columns

आप भी तिथि प्राप्त कर सकते हैं और क्वेरी

SELECT 
    CONVERT(VARCHAR(10),GETDATE(),111) as DatePart, 
    convert(varchar(15), getdate(), 108) TimePart 
+0

असल में उन्हें विभाजित करने के कुछ अच्छे कारण हैं। उदाहरण के लिए दिनांक डेटाटाइप का उपयोग करें जब आपको समय की परवाह नहीं है .. डेटोफर्थ कहें .. इस तरह आपकी आयु गणना बहुत सरल है। शिफ्ट गणना करने के लिए समय डेटा प्रकार उत्कृष्ट है। मैं हर किसी को चाहता हूं जो तिथि के बावजूद 5 बजे काम करता है। आप उन्हें विभाजित कर सकते हैं जैसे कि आपने किया लेकिन फिर वे वर्चर हैं और कुछ गणनाएं और अधिक कठिन हो जाती हैं। कौन सा '01: 00: 00 अपराह्न 'या '12: 30: 00 पूर्वाह्न' है? –

2

यदि आप जानबूझकर उस समय की परवाह नहीं करते हैं, तो यह स्टोर करने के लिए अधिक कुशल है डेटा डेटटाइप के रूप में डेटा है। ग्राहक जन्मदिन कॉलम पर विचार करें, ऐसे कई मामले नहीं हैं जिनके बारे में मैं सोच सकता हूं कि इस बार उपयोग किया जाएगा। यदि वहां से जुड़ा समय होता है (अक्सर एक बग), तुलना करने के लिए इसे एक कन्वर्ट स्टेटमेंट के माध्यम से हटा दिया जाना चाहिए। यदि आपको इन मानों की आवश्यकता नहीं है (8 की तुलना में 3 बाइट्स) की आवश्यकता नहीं है तो यह अतिरिक्त जगह भी खाती है।

मुझे लगता है कि यह आईडी के साथ एक स्टेटस कोड तालिका के समान है जैसे कि एक छोटे से या इसके बजाए एक बिल्टिंट के रूप में (आप कितने स्टेटस कोड की योजना बना सकते हैं)।

यह सिर्फ एक बात है कि आप डेटा का उपयोग कर रहे हैं, अगर आपको लगता है कि आपको एक अच्छा मौका है तो आपको उस डेटा की आवश्यकता होगी, फिर डेटाटाइम का उपयोग करें, अन्यथा तारीख का उपयोग करें।

संबंधित मुद्दे