البرمجة ومشكلة التاريخ
Posted by admin | Posted in غير مصنف | Posted on 08-06-2008
بسم الله الرحمن الرحيم
الكثير منا وخاصة من يتعامل مع قواعد البيانات لا
بد وان واجه مشكلة في حقل التاريخ والسبب في ذلك اختلاف صيغة التاريخ العربية مع قواعد
البيانات مصممة على (الشهر يأتي قبل اليوم )نظام التاريخ الامريكي .
فالمشكلة تأتي غالبا على شكلين اما عندما يكون اليوم اكبر من 12 وبالتالي يتم عكس
اليوم بدل الشهر وتحدث كارثة مخفية لا يعلم بها المبرمج الا بعد تدقيق وتصحيح
من الزبون بسبب اختلاف في الحسابات او ما الى ذلك
والشكل الثاني عندما يكون اليوم اكبر من 12 فهنا يظهر خطأ من قاعدة البيانات
وبرفض تخزين مثل هذا التاريخ.
هاتين المشكلتين دعت بعض المبرمجين الى الاستغناء عن حقل التاريخ واسبتداله بحقل نصي
لكن مع الاستمرار في العمل ظهرت امامهم عدة مشاكل بسبب هذا التغيير من هذه المشاكل
- عدم المقدرة على ترتيب البيانات بالشكل الصحيح
- عدم المقدرة على اجراء الحسابات على التاريخ مثل اضافة يوم او شهر
- عدم المقدرة على استخدام دوال التاريخ
- احتمال ادخال تاريخ بشكل غير صحيح
بالاضافة الى خسارة سرعة معالجة التاريخ عن الحقول النصية وخاسرة الوقت والجهد
لمعالجة هذه النواقص في الحقول النصيةإذاً ما الحل ؟
حسب اعتقادي اسهل الحلول هي تغيير شكل التاريخ على اجهزة السيرفر والكلينت
لتكون بالشكل المناسب للدول العربية والتي هي على الشكل
dd/MM/yyyy
ويمكن عمل ذلك من خلال الويندوز ثم إبدأ ثم تشغيل ثم نكتب الامر
intl.cpl
لنقوم بتشغيل لوحة اعدادت اقليمية ثم زر تخصيص ثم التاريخ ثم نضع الشكل المناسب للتاريخ
الحل الثاني هو استخدام الصيغة القياسية ISO Format لتخزين التاريخ والتي هي على الشكل
yyyyMMdd
فمثلا لادخال تاريخ اليوم والذي هو الثامن من حزيران نستخدم مايلي
insert into someTable (mydate) (‘20080608′)
هذا بالشكل العام وينطبق على الاغلب على اي لغة برمجة
وأخيرا اقول قبل تحويل حقل التاريخ الى حقل نصي ارجو تجريب الطريقتين السابقتين




