كيف ميلاد (لا ولادة التاريخ) البحث في المؤسسة العامة لاستصلاح الأراضي?

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

  •  22-08-2019
  •  | 
  •  

سؤال

لدي مؤشر مخازن الولادة-مواعيد و أود أن البحث عن أي شخص الذي الميلاد-تاريخ مسافة X أيام معينة في الشهر/اليوم.على سبيل المثال, أود أن أعرف إذا كان أي شخص ميلاد قادم في غضون عدد معين من الأيام ، بغض النظر عن السنة التي ولدت.كيف يمكنني تنفيذ هذا الاستعلام هذا باستخدام المؤسسة العامة لاستصلاح الأراضي?(في "تاريخ الميلاد" الميدان)

متابعة افتراض هذا الاستعلام يتم تنفيذه في كثير من الأحيان يجب أن تكون الفهرسة شيء آخر غير ولادة التاريخ ؟ مثل فقط في الشهر-اليوم زوج ؟ ما هي الطريقة الأكثر فعالية للقيام بمثل هذه استعلام (من الاستعلام نظر بفهرسة)?

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

المحلول

وعليك أن تتذكر أن المؤسسة العامة يستخدم لوسين، وأنه اعتبارا من الآن - كل شيء يتم تخزينها وفهرستها كسلسلة

والاستعلام المدى كما هو لن ينجح لأن التواريخ يتم عادة فهرسة داخليا كما YYYYMMDD

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

وبعد ذلك يمكنك بناء rangequeries، لأن كل ما تحتاجه لمباراة ضد في الجزء الأمامي من سلسلة، ولوسين مباريات lexiographically

و(A rangequery الذي كان با -> قبل الميلاد أن تتطابق الخفافيش، البيسبول، ولكن ليس ل)

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

نصائح أخرى

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

علما بأن 1980 هي سنة كبيسة ، وهذا هو السبب في أنني اخترت ذلك - وإلا مع عيد ميلاد 29 فبراير يمكن أن يكون من الصعب أن تمثل.

بدلا من ذلك, "يوم/شهر" زوج في شكل عدد صحيح:

(100 * month) + day

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

تحرير: لدي فكرة أخرى.انها قليلا شاف, ولكن على الرغم من ذلك...

متجر الولادة تاريخ في شكل فعال الشهر ، اليوم ، في العام.لا أعلم إن المؤسسة العامة لاستصلاح الأراضي يمكن أن تفعل ذلك بسهولة في MM/dd/yyyy ومن ثم القيام lexicographic من أجل البحث ، ولكن البديل هو

(100000 * month) + (1000 * dayOfMonth) + (year - 1900)

(هذا على افتراض أنك لا تحتاج إلى تخزين تواريخ الميلاد في وقت سابق من عام 1900.أنا متأكد من أنك يمكن تفصيل ذلك.)

يمكنك استرداد ما زال الأصلي تاريخ الميلاد, ولكن الأمر سوف يكون في عيد ميلاد النظام ، مع أقدم شخص الأولى في أي تاريخ معين.

يعني من الصعب فرز الناس الفعلية العمر على الرغم من.أنا لا أعرف إذا كان هذا هو مشكلة بالنسبة لك.

على كل حال كما قلت انها قليلا خارج الجدار ، ولكن ذلك قد يساعد :)

هل يمكن تخزين عيد ميلاد وعدد من 1 إلى 366. ثم بحث تلك القيمة. ميزة هو أنه يمكنك ثم بحث مع نطاقات اليوم بسهولة تامة. العيب هو أنه لا يمكنك بسهولة استخدام هذا المجال لإيجاد الأشخاص الذين ميلاده هذا الشهر.

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