التاريخ الهجري و الميلادي في اوراكل Gregorian & Hijri date in Oracle



السلام عليكم و رحمة الله 


هذه اول مواضيعي في مجموعة مستخدمي اوراكل العرب 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

Remove unused Layouts in Oracle Apex

 Tables used : APEX_XXXXXXX.WWV_FLOW_REPORT_LAYOUTS APEX_XXXXXXX.WWV_FLOW_SHARED_QUERIES use the following query to delete unused Layouts. ...