كيف يمكنني تخزين التاريخ التي يمكن أن تكون جزئية (أيفقط السنة ، ربما الشهر أيضا) و الإخراج في وقت لاحق مع نفس specifity?

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

سؤال

أريد أن تسمح للمستخدمين تحديد التاريخ الذي قد أو قد لا تتضمن في اليوم و الشهر (ولكن سيكون لديك على الأقل في العام.) المشكلة هي عندما يتم تخزين التاريخ والوقت في ديسيبل ؛ المفقود اليوم/الشهر سيتم حفظ القيم الافتراضية سوف تفقد الشكل الأصلي ومعنى التاريخ.

كانت فكرتي لتخزين شكل حقيقي في عمود كسلسلة بالإضافة إلى التاريخ والوقت العمود.ثم يمكنني استخدام سلسلة العمود كلما لدي لعرض التاريخ و التاريخ والوقت على كل شيء آخر.الجانب السلبي هو إضافي عمود على كل عمود التاريخ في الجدول أريد أن عرض و طباعة مترجمة التواريخ لن يكون سهلا منذ أنا لا يمكن أن تعتمد على قيمة تاريخ / وقت...ربما سوف يكون تحليل السلسلة.

أتمنى لقد أغفلت شيئا و قد يكون هناك طريقة أسهل.

(ملاحظة أنا باستخدام القضبان إذا كانت الأمور عن حل.)

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

المحلول

كما اقترح Jhenzie, إنشاء قناع بت أن تظهر أجزاء من تاريخ تم تحديده.1 = سنة, 2 = شهر 4 = اليوم 8 = ساعة (إذا كنت ترغب في الحصول على أكثر تحديدا) ومن ثم تخزينها في حقل آخر.

الطريقة الوحيدة التي يمكنني أن أفكر في القيام بذلك دون التي تتطلب مزيدا من الأعمدة في الجدول الخاص بك استخدام jhenzie طريقة استخدام قناع بت ثم المخزن الذي بت في ثانية جزء من العمود التاريخ والوقت.

نصائح أخرى

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

عمود إضافي بسيطة يمكن أن تستخدم في تحديد أي جزء من التاريخ الوقت تم تحديده

1 = يوم 2 = شهر 4 = سنة

حتى 3 يوم و شهر و 6 أشهر و سنة و 7 هو كل ثلاثة.انها بسيطة الباحث في هذه النقطة

إذا قمت بتخزين سلسلة لا جزئيا اختراع 8601 ISO القياسية التي تغطي حالة تصف وأكثر من ذلك:

http://en.wikipedia.org/wiki/ISO_8601

هل من الضروري حقا أن متجر على أنها التاريخ والوقت في كل شيء ؟ إذا كان لا يتم تخزينها على أنها سلسلة 2008 أو 2008-8 أو 2008-8-1 - تقسيم السلسلة على الواصلات عندما سحب وكنت قادرا على تحديد كيفية معينة الأصلي الإدخال كان

ربما تخزين التاريخ والوقت إضافية "الدقة" عمود لتحديد كيفية إخراج ذلك.الإخراج ، الدقة عمود يمكن أن خريطة العمود الذي يحتوي على المقابلة تنسيق سلسلة ("YYYY-mm" ، الخ) أو أنها يمكن أن تحتوي على تنسيق السلسلة نفسها.

أنا لا أعرف الكثير عن DB تصميم, ولكن أعتقد نظيفة طريقة للقيام بذلك سيكون مع منطقية الأعمدة مشيرا إلى إذا كان المستخدم لديه مدخلات الشهر و اليوم (عمود واحد لكل منهما).ثم إلى حفظ تاريخ معين, يمكنك:

  1. متجر تاريخ إدخال المستخدم في عمود التاريخ والوقت;
  2. تعيين منطقية الشهر العمود إذا كان المستخدم قد اختار شهر ؛
  3. تعيين منطقية يوم العمود إذا كان المستخدم قد اختار اليوم.

وبهذه الطريقة يمكنك معرفة أي أجزاء من التاريخ والوقت يمكنك الثقة (أيما كان الإدخال من قبل المستخدم).

تحرير:كما سيكون من الأسهل بكثير أن نفهم من وجود int حقل خفي القيم!

على ينفورميكس قاعدة بيانات هذا المرفق.عند تعريف حقل التاريخ يمكنك أيضا تحديد قناع من الوقت المطلوب & تاريخ الصفات.فقط هذه الحقول العد عند إجراء المقارنات.

مع مستويات متفاوتة من الدقة ، وأفضل رهان هو لتخزينها بسيطة nullable رجات.السنة والشهر واليوم.يمكنك تحديد عرض منطق في العرض التقديمي الخاص بك نموذج أو قيمة الكائن في المجال الخاص بك.

المدمج في وقت أنواع تمثل لحظة في الوقت المناسب.يمكنك استخدام المدمج في أنواع إنشاء عمود الدقة (السنة ، الشهر ، اليوم ، الساعة ، إلخ.) أو يمكنك إنشاء الخاصة بك تاريخ الهيكل واستخدام القيم الخالية (أو آخر قيمة غير صالحة) فارغة أجزاء.

بالنسبة روبي على الأقل - يمكن استخدام هذه الأحجار الكريمة - جزئي-تاريخ https://github.com/58bits/partial-date

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