2008-10-12 16 views
5

में एक C# DateTimeOffset मान संग्रहीत करना मैं SQL Server 2005 डेटाबेस में एक C# DateTimeOffset मान संग्रहीत करना चाहता हूं।SQL सर्वर 2005 डेटाबेस

एसक्यूएल 2008 में यह एक अंतर्निहित प्रकार के रूप में है, लेकिन SQL Server 2005 नहीं है।

डेटटाइम ऑफसेट संरचना में डेटटाइम वैल्यू है जिसे मैं डेटटाइम, ऑफसेट प्रॉपर्टी (प्रकार टाइमस्पेन) के रूप में संग्रहीत करता हूं। चूंकि यह यूटीसी के सापेक्ष समय क्षेत्र है, संभवतः यह पूरी तरह से घंटों या आधे घंटे में है।

SQL सर्वर 2005 डेटाबेस में इसे संग्रहीत करने के तरीके के बारे में सुझाव?

+0

संबंधित प्रश्न - http://stackoverflow.com/questions/2532729/daylight-saving-time-and-timezone-best-practices – Oded

उत्तर

7

यह नहीं है एक अच्छा विचार ग्रहण करने के लिए है कि एक ऑफसेट घंटे या आधे घंटे के एक नंबर है - निश्चित रूप से चारों ओर हैं पंद्रह मिनट समय क्षेत्र।

ऑफ़सेट के लिए मिलीसेकंड का उपयोग करना शायद सबसे लचीला है, लेकिन मैं तर्क दूंगा कि मिनट पढ़ने के लिए बहुत आसान है। यदि आप कभी भी डेटाबेस में "कच्चे" डेटा को देखने जा रहे हैं, तो 3600000 से मूल्य 60 = 1 घंटे को समझना आसान है। मैं कल्पना नहीं कर सकता कि आपको ऑफसेट के रूप में मिनटों के अंशों की वास्तव में आवश्यकता है।

1

दुकान दिनांक के रूप में दिनांक और के रूप में मिलीसेकंड (bigint) ऑफसेट

4

सभी डेटटाइमऑफसेट को सामान्य ऑफसेट, अधिमानतः यूटीसी में सामान्यीकृत करें। फिर बस डेटटाइम को सामान्य रूप से स्टोर करें। निष्कर्षण पर ऑफसेट को पुनर्स्थापित करें, जो स्थिर होना चाहिए। यह मूल ऑफसेट को बरकरार नहीं रखता है लेकिन ऑफसेट किसी भी समय एक टाइमज़ोन के लिए संदिग्ध है।

यदि आपको वास्तव में दिनांक/समय मूल जानने की आवश्यकता है, तो आपको कुछ टाइमज़ोन जानकारी स्टोर करने की आवश्यकता होगी। ऐसा इसलिए है क्योंकि एक साधारण ऑफसेट एक समय की उत्पत्ति का स्पष्ट रूप से प्रतिनिधित्व नहीं कर सकता है। कृपया Choosing Between DateTime, DateTimeOffset, and TimeZoneInfo के बारे में एमएसडीएन दस्तावेज देखें (कुछ हद तक भ्रमित)।

+0

सहमत - यूटीसी के रूप में स्टोर की तारीखें और केवल इस समय समय-समय पर और डीएसटी ऑफ़सेट के बारे में चिंता करें उपयोगकर्ता को प्रस्तुति। –

+1

मैं असहमत हूं। डेटटाइम ऑफसेट संरचना (सी # और एसक्यूएल 2008 में) समय को यूटीसी या स्थानीय समय + ऑफसेट के रूप में स्टोर करती है। एक यूटीसी समय + ऑफ़सेट स्टोर करना उस रिश्ते को उलट देगा और केवल भ्रम पैदा करेगा। –