DATETIME प्रारंभ DATETIME अंत
मैं आपको दो DATETIME मानों का उपयोग करने के लिए कहता हूं , जैसे कि event_start और event_end जैसे कुछ लेबल ।
समय एक जटिल व्यवसाय है
दुनिया के अधिकांश लोगों ने अब ज्यादातर मापों के लिए सही या गलत तरीके से इनकार आधारित मीट्रिक प्रणाली को अपनाया है। यह कुल मिलाकर अच्छा है, क्योंकि कम से कम हम सभी सहमत हो सकते हैं कि एजी, एक एमएल है, एक घन सेमी है। कम से कम लगभग इतना। मीट्रिक प्रणाली में कई खामियां हैं, लेकिन कम से कम यह अंतरराष्ट्रीय स्तर पर लगातार दोषपूर्ण है।
हालांकि समय के साथ, हमारे पास; एक सेकंड में 1000 मिलीसेकंड, 60 सेकंड से एक मिनट, 60 मिनट से एक घंटा, प्रत्येक आधे दिन में 12 घंटे, लगभग 30 दिन प्रति माह जो महीने और यहां तक कि साल के अनुसार अलग-अलग होते हैं, प्रत्येक देश का समय दूसरों से अलग होता है। , जिस तरह से प्रत्येक देश में स्वरूपित समय भिन्न होता है।
यह पचाने के लिए बहुत कुछ है, लेकिन इस तरह के जटिल परिदृश्य के लिए एक सरल समाधान होना लंबा और छोटा है।
कुछ कोनों को काटा जा सकता है, लेकिन ऐसे भी हैं जहां यह समझदार नहीं है
यद्यपि यहाँ शीर्ष उत्तर बताता है कि आप आधी रात के बाद का एक पूर्णांक स्टोर करते हैं, यह पूरी तरह से उचित प्रतीत हो सकता है, मैंने ऐसा करने से बचना सीख लिया है।
दो DATETIME मूल्यों को लागू करने के कारण सटीकता, संकल्प और प्रतिक्रिया में वृद्धि के लिए हैं।
जब डिजाइन अवांछनीय परिणाम पैदा करता है तो ये सभी बहुत काम आते हैं।
क्या मैं आवश्यकता से अधिक डेटा संग्रहीत कर रहा हूं?
यह शुरू में ऐसा प्रतीत हो सकता है कि मेरी आवश्यकता से अधिक जानकारी संग्रहीत की जा रही है, लेकिन इस हिट को लेने का एक अच्छा कारण है।
इस अतिरिक्त जानकारी को संग्रहीत करने से मुझे हमेशा समय और प्रयास की बचत होती है, क्योंकि मुझे यह अनिवार्य रूप से लगता है कि जब किसी को बताया जाता है कि कुछ कब तक हुआ है, तो वे अतिरिक्त रूप से जानना चाहते हैं कि कब और कहां घटना हुई।
यह बहुत बड़ा ग्रह है
अतीत में, मुझे इस बात को नजरअंदाज करने का दोषी माना गया है कि इस ग्रह पर अन्य देश भी हैं। यह उस समय एक अच्छा विचार था, लेकिन इससे ALWAYS की समस्याएँ, सिरदर्द और बाद में समय बर्बाद हो गया। हमेशा सभी समय क्षेत्रों पर विचार करें।
सी#
एक तारीख समय सी # में एक स्ट्रिंग के लिए अच्छी तरह से प्रदान करता है। ToString (स्ट्रिंग प्रारूप) विधि कॉम्पैक्ट और पढ़ने में आसान है।
उदाहरण के लिए
new TimeSpan(EventStart.Ticks - EventEnd.Ticks).ToString("h'h 'm'm 's's'")
एस क्यू एल सर्वर
यदि आप अपने डेटाबेस को अपने एप्लिकेशन इंटरफ़ेस से अलग पढ़ रहे हैं, तो डेटटाइम्स एक नज़र में पढ़ने के लिए सुखद हैं और उन पर गणना करना सरल है।
उदाहरण के लिए
SELECT DATEDIFF(MINUTE, event_start, event_end)
ISO8601 दिनांक मानक
यदि SQLite का उपयोग कर रहे हैं, तो आपके पास यह नहीं है, इसलिए इसके बजाय एक पाठ क्षेत्र का उपयोग करें और इसे ISO8601 प्रारूप में स्टोर करें।
"2013-01-27T12: 30: 00 + 0000"
टिप्पणियाँ:
उदाहरण के लिए
TimeOffset=(±Longitude.24)/360
... जहाँ ± पूर्व या पश्चिम दिशा को संदर्भित करता है।
इसलिए यह विचार करने योग्य है कि क्या यह डेटा के साथ-साथ देशांतर, अक्षांश और ऊँचाई के भंडारण के लायक होगा। यह आवेदन में अलग-अलग होगा।
ISO8601 एक अंतर्राष्ट्रीय प्रारूप है।
विकी http://en.wikipedia.org/wiki/ISO_8601 पर अधिक जानकारी के लिए बहुत अच्छा है ।
दिनांक और समय को अंतर्राष्ट्रीय समय में संग्रहीत किया जाता है और ऑफसेट दर्ज किया जाता है कि दुनिया में समय कहां संग्रहीत किया गया था।
मेरे अनुभव में हमेशा पूर्ण तिथि और समय संग्रहीत करने की आवश्यकता होती है, इस बात की परवाह किए बिना कि क्या मुझे लगता है कि जब मैं परियोजना शुरू करूंगा। ISO8601 यह करने का एक बहुत अच्छा, भविष्य की ओर ले जाने वाला तरीका है।
मुफ्त के लिए अतिरिक्त सलाह
यह एक श्रृंखला की तरह एक साथ समूह बनाने के लायक भी है। उदाहरण के लिए, यदि कोई रेस रिकॉर्ड करता है, तो पूरे ईवेंट को रैसर, रेस_क्रिसिट, सर्किट_चेकप्वाइंट और सर्किट_लैप द्वारा समूहीकृत किया जा सकता है।
मेरे अनुभव में, यह भी पहचानना है कि रिकॉर्ड किसने संग्रहीत किया है। या तो एक अलग तालिका ट्रिगर के माध्यम से या मूल तालिका के भीतर एक अतिरिक्त स्तंभ के रूप में आबादी के रूप में।
जितना अधिक आप अंदर डालते हैं, उतना ही आप बाहर निकलते हैं
मैं अंतरिक्ष के साथ जितना संभव हो उतना किफायती होने की इच्छा को पूरी तरह से समझता हूं, लेकिन जानकारी खोने की कीमत पर मैं शायद ही कभी ऐसा करूंगा।
डेटाबेस के साथ अंगूठे का एक नियम जैसा कि शीर्षक कहता है, एक डेटाबेस आपको केवल उतना ही बता सकता है जितना उसके पास डेटा है, और ऐतिहासिक डेटा के माध्यम से वापस जाने के लिए बहुत महंगा हो सकता है, अंतराल में भरना।
समाधान यह है कि इसे पहली बार सही किया जाए। यह निश्चित रूप से किया गया आसान है, लेकिन अब आपके पास प्रभावी डेटाबेस डिज़ाइन की गहरी जानकारी होनी चाहिए और बाद में इसे पहली बार सही करने का एक बेहतर सुधार होगा।
बेहतर आपका प्रारंभिक डिजाइन, कम खर्चीला मरम्मत बाद में होगा।
मैं केवल यह सब कहता हूं, क्योंकि अगर मैं समय पर वापस जा सकता था, तो यह वही है जो मैं वहां पहुंचने पर खुद को बताऊंगा।