تخزين قيمة DateTimeOffset ج # في قاعدة بيانات SQL Server 2005

StackOverflow https://stackoverflow.com/questions/195606

سؤال

وأريد لتخزين وج # قيمة DateTimeOffset في SQL 2005 ملقم قاعدة البيانات.

وSQL 2008 لديها في ذلك المدمج في نوع، ولكن SQL خادم 2005 لا.

وهيكل DateTimeOffset له قيمة اللي تبونه التاريخ والوقت يمكنني تخزين كما التاريخ والوقت، وهي خاصية إزاحة (من نوع زمنية). حيث أن هذه هي المنطقة الزمنية بالنسبة إلى UTC، ويفترض أنها أوسلي في عدد كامل من ساعات أو نصف ساعة.

واقتراحات بشأن أفضل السبل لتخزين هذا في SQL 2005 ملقم قاعدة البيانات؟

هل كانت مفيدة؟

المحلول

وانها ليست فكرة جيدة أن نفترض أن إزاحة هو عدد الساعات أو نصف ساعة - هناك بالتأكيد الزمنية ربع ساعة حول

.

وعن طريق ميلي ثانية للتعويض هو على الارجح الاكثر مرونة، ولكن يهمني القول أن دقيقة هي أسهل كثيرا للقراءة. إذا كنت تريد الذهاب من أي وقت مضى أن ننظر إلى البيانات "الخام" في قاعدة البيانات، فإنه من السهل أن نفهم قيمة 60 = 1 ساعة من 3600000. لا أستطيع أن أتخيل كنت حقا تحتاج إلى كسور دقائق كما الإزاحة.

نصائح أخرى

وتطبيع كل DateTimeOffsets إلى شيوعا تعويض، ويفضل UTC. ثم عادل تخزين التاريخ والوقت على النحو المعتاد. على استخراج استعادة الإزاحة، التي ينبغي أن تكون ثابتة. هذا لا يحتفظ منشؤها تعويض ولكن الإزاحة غامضة إلى التوقيت على أي حال.

إذا كنت فعلا بحاجة لمعرفة أصل التاريخ / الوقت، ثم كنت بحاجة لتخزين بعض المعلومات الزمنية. وذلك لأن بسيط تعويض لا يمكن أن تمثل بشكل لا لبس فيه أصل وقت واحد. يرجى الاطلاع على (ومربكة إلى حد ما) MSDN وثائق حول اختيار بين التاريخ والوقت، DateTimeOffset، وTimeZoneInfo .

وتخزين التاريخ والوقت كما التاريخ والوقت والإزاحة كما ميلي ثانية (BIGINT)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top