نمط تاريخ SQL للتواريخ التي قد لا يعرف المستخدم جميع المعلومات فيها

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

سؤال

يتيح لك النظام للمستخدمين الجدد التسجيل وإدخال تاريخ زفافهم.لكوني نقيًا، أردت تخزين هذا كموعد.وبعد مقابلات مع المستخدمين، كان من الواضح أن الواقع يختلف عن هذا النهج.غالبًا ما يكون المستخدمون غير متأكدين من اليوم أو الشهر، ويرغبون في تخزين تواريخ جزئية، مثل "يونيو 2009" أو "في وقت ما في عام 2012".

هل يعرف أحد نمط تصميم جيد يسمح بتخزين التواريخ الجزئية، ثم محاولة إنشاء جدول زمني لليوم الكبير - على الرغم من وجود تواريخ جزئية مُدخلة؟

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

المحلول

وربما "غامض" التاريخ. إذا كانوا يقولون "يونيو 2009"، التي يمكن تخزينها على شكل 15 يونيو 2009، مع تباين +/- 15 يوما.

و"في وقت ما في عام 2010" سيكون 1 يوليو 2010 مع تباين 180 يوما.

وهكذا تخزين التاريخ و# أيام.

إذا / كيف يمكن أن تعمل من الناحية العملية لا أعرف. مجرد فكرة. نطاق زمني قد يكون أسهل في التنفيذ.

نصائح أخرى

هل يمكن تخزينه إلى مجموعة مع عمود بعد التاريخ وقبل التاريخ.

يمكنك دائمًا تخزين التاريخ في أعمدة منفصلة:

  • سنة
  • شهر
  • يوم من الشهر

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

هل يمكن تخزين التواريخ كما YYYYMMDD، مع أشهر مجهولة / يوما إلى 0. على سبيل المثال، فإن 20090200 يكون "في يوم من الأيام في فبراير 2009". هذا سوف كل ما لفرز ومقارنة بسهولة نسبيا، وإذا كنت بحاجة إلى تحويله إلى تاريخ، يمكنك فقط إضافة 1 إلى شهر أو يوم للحصول على تقريب لمزيد من comparisions تاريخ المتقدمة.

وكان لي مشكلة مماثلة مع التواريخ. مع هذه القضية وأضاف أن بعض الناس يريد أيضا أن أقول "15 يونيو"، دون تحديد السنة. هل هذا حال كان لديك للتعامل مع جدا؟

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

ولكن، وكما أضع كل منطق التعامل مع التاريخ في طلبي، وأنا أبدا الوصول إلى الأعمدة الثلاثة على حدة. بعد فوات الأوان تمنيت أنني قد وضعها في عمود واحد، وعقد مواعيد جزئية كسلاسل (شيء من هذا القبيل "19740615"، "1974 ----" "---- 0615"، وما إلى ذلك)، فقط لدرجة أنني ' د يكون أقل عمود فوضى.

واعتقد ان ذلك يعتمد وكم كنت تريد أن تفعل في قاعدة البيانات، وكم كنت تريد أن تفعل في التطبيق الخاص بك. وفي كلتا الحالتين، أعتقد أنك سوف اختراع العجلة بشكل مختلف قليلا على شكل. ولكن بالطبع، كنت جيدة بما يكفي لجعل بعض مرتبة، مغلفة، والطبقات القابلة لإعادة الاستخدام - التي سوف تجعل من المرح! : -)

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