السلام عليكم و رحمة الله
هذه اول مواضيعي في مجموعة مستخدمي اوراكل العرب araboug اسال الله تعالى ان ينفعني و اياكم بها.
لا يخفى على احد اهمية استخدام التاريخ الهجري و لا يمكن الاعتماد كليه على معادلات اوراكل مثل :
-- لتحويل تاريخ اليوم الميلادي الى هجري نستخدم
select to_char(sysdate,'dd/mm/yyyy','nls_calendar =''arabic hijrah''') from dual
حيث نجد اختلاف يوم او يومين فمثلا يوم 13 صفر 1437
عند تحويله باستخدام المعادلة السابقة فالناتج يكون :
12/02/1438
و لكن الصحيح ان التاريخ الهجري المقابل للتاريخ الميلادي 13/11/2016 هو13/02/1438.
و افضل طريقة حسب ما اعرف و قرات هو الاحتفاظ بالتاريخ الهجري في قاعدة البيانات كما هو دون الاعتماد على معادلات اوراكل.
الطريقة التي اعتمدت عليها :
# انشاء جدول
Create table Ar_convert_date (convert_id number , Hj_date varchar2(10) , G_date varchar2(10))
# عمل شيت اكسيل بنفس شكل الجدول و يبدا التاريخ الميلادي من 01/01/2015 و حتى 01/01/2050
# تحت Hj_date في الاكسيل نكتب معادلة تحويل الهجري و هي:
=text(G_date,"b2dd/mm/yyyy")
# في عمود جديد في الاكسيل نكتب معادلة التاريخ الميلاد و تكون :
=text(G_date,"dd/mm/yyyy")
#بعد ذلك نقوم بنسخ الثلاثة اعمدة : Convert_id , Hj_date , العمود الاخيرالرابع
# لصق القيم فقط Paste Values في شيت جديد
# بعد هذا يمكن استيراد البيانات مباشرة الى اوراكل باستخدام الTOAD و ان كنت افضل الاستيراد باستخدام جملة INSERT
# طبعا لن ارهقكم في كتابة جملة INSERT عدد 12866 مرة و هذا مستحيل
# نقوم بكتابة جملة INSERT في الاكسيل كما هو مرفق ثم عمل نسخ و لصق للقيم فقط Paste Values
#نسخ جملة INSERT الى متصفح Browser من خلال الدخول الى
كما هو معروف و عمل Execute
و بهذا تم ادراج جميع التواريخ الميلادي (01/01/2015 حتى 01/01/2050) و الهجري (11/03/136 - 08/04/1472) في الفترة المحددة .
#الخطوة التالية تكون عمل Function او Procedure
باقي الملفات في الرابط التالي بسب ان حجمها تجاوز ال 1 ميجا.
No comments:
Post a Comment