البرمجة ومشكلة التاريخ

Posted by admin | Posted in غير مصنف | Posted on 08-06-2008

بسم الله الرحمن الرحيم

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

فالمشكلة تأتي غالبا على شكلين اما عندما يكون اليوم اكبر من  12 وبالتالي يتم عكس
اليوم بدل  الشهر وتحدث  كارثة مخفية لا يعلم بها المبرمج الا بعد تدقيق وتصحيح
من الزبون بسبب اختلاف في الحسابات او ما الى ذلك

والشكل الثاني عندما يكون اليوم  اكبر من 12 فهنا  يظهر خطأ من قاعدة البيانات
وبرفض تخزين مثل هذا التاريخ.

هاتين المشكلتين دعت بعض المبرمجين الى الاستغناء عن حقل التاريخ واسبتداله بحقل نصي
لكن مع الاستمرار في العمل ظهرت امامهم عدة مشاكل بسبب هذا التغيير من هذه المشاكل

  • عدم المقدرة على ترتيب البيانات بالشكل الصحيح

  • عدم المقدرة على اجراء الحسابات على التاريخ مثل اضافة يوم او شهر

  • عدم المقدرة على استخدام دوال التاريخ

  • احتمال ادخال تاريخ بشكل غير صحيح

بالاضافة الى خسارة سرعة معالجة التاريخ عن الحقول النصية  وخاسرة الوقت والجهد
لمعالجة هذه النواقص في الحقول النصية

إذاً ما الحل ؟

حسب اعتقادي اسهل الحلول  هي تغيير شكل  التاريخ على اجهزة السيرفر والكلينت
لتكون بالشكل المناسب للدول العربية والتي هي على الشكل 

dd/MM/yyyy

ويمكن عمل ذلك من خلال الويندوز ثم  إبدأ ثم  تشغيل ثم نكتب الامر

intl.cpl

لنقوم بتشغيل لوحة اعدادت اقليمية ثم زر تخصيص ثم التاريخ ثم نضع الشكل المناسب للتاريخ

ddMMyyyy

الحل الثاني هو استخدام الصيغة القياسية ISO Format لتخزين التاريخ والتي هي على الشكل

yyyyMMdd

فمثلا لادخال تاريخ اليوم والذي هو الثامن من حزيران نستخدم مايلي

insert into someTable (mydate) (‘20080608′)

هذا بالشكل العام وينطبق على الاغلب على اي  لغة برمجة

وأخيرا  اقول قبل تحويل حقل التاريخ الى حقل نصي  ارجو تجريب الطريقتين السابقتين

Post your comment