الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

مشكلة ادخال التاريخ 30/صفر في قاعدة البيانات وتجربة بعض الحلول

Featured Replies

بتاريخ:

السلام عليكم ورحمه الله وبركاته

شرح المشكلة :
أنه لا يمكن إدخال التاريخ الهجري 29-02-1430 و 30-02-1430 في أي حقل من نوع تاريخ في قاعدة البيانات
-----------------------------------------------------------------------------------------------------------------
** الحلول والتجارب التي تم عملها :
أولا :
1- الاعتماد على جداول تم إعدادها مسبقا ، ومن خلال هذه الجداول يستطيع الشخص التحويل ،
وهنا في مثالنا تم عمل جدول ويضم بداية التاريخ الهجري وما يقابله من ميلادي ، وكذلك نهاية التاريخ الهجري وما
يقابله من ميلادي على سبيل المثال كالتالي :

الشهر الهجري------------------ 1
اسم الشهر الهجري------------ محرم
بداية التاريخ الهجري------------- 01-01-1430
بداية التاريخ الميلادي------------ 29-12-2008
نهاية التاريخ الهجري------------- 29-01-1430
نهاية التاريخ الميلادي------------ 26-01-2009
**************************************************************************
الشهر الهجري------------------ 2
اسم الشهر الهجري------------ صفر
بداية التاريخ الهجري------------- 01-02-1430
بداية التاريخ الميلادي------------ 27-01-2009
نهاية التاريخ الهجري------------- 30-02-1430
نهاية التاريخ الميلادي------------ 25-02-2009
**************************************************************************
2- جعل نوع الحقل(التاريخ) الموجود في كل الفورم DATA TYPE=CHAR
3- ويتم تخزين التاريخ في قاعدة البيانات في حقل نوعه أيضاً DATA TYPE=CHAR
عيوبها :
الحقل التاريخ نوعه DATA TYPE=DATE موجود في جداول وشاشات النظام كاملة وعليه فإنه
من الصعب التعديل على كل النظام كامل .

-----------------------------------------------------------------------------------------------------------------

ثانياً :
جعل التاريخ الهجري هو التاريخ الافتراضي للـ DEVELOPER و لقاعدة البيانات وذلك من خلال التالي :
- التعديل في REGEDIT في الــ HOME الخاص بالــ DEVELOPER وكذلك الخاص بالــ D.B
بإضافة NLS_CALENDAR=ARABIC_HIJRAH
أو عن طريق تنفيذ الأمر :
لتحويل التاريخ من ميلادي الى هجري :
SQL>ALTER SESSION SET NLS_CALENDAR = 'ARABIC HIJRAH' ;
اذا تم تنفيذ هذا الامر بنجاح فسوف تظهر لك هذه الرساله .Session altered
وللتاكد من صحه ذلك يتم تنفيذ جمله select التاليه قبل وبعد تحويل التاريخ .
SQL>SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY') FROM DUAL;
ولتحويل التاريخ من هجري الى ميلادي :
SQL>ALTER SESSION SET NLS_CALENDAR = 'GREGORIAN' ;
اذا تم تنفيذ هذا الامر بنجاح فسوف تظهر لك هذه الرساله .Session altered

* عيوبها :
أن التقويم الهجري الخاص بأوراكل قيمة مثبته لكل السنوات كالتالي :
شهر محرم عدد الأيام 30
شهر صفر عدد الأيام 29
شهر ربيع الأول عدد الأيام 30
شهر ربيع الثاني عدد الأيام 29
.................. إلى آخره .
وهــــــــكــــــــذا

- عند عمل التغيير في الريجستري ، تم الذهاب إلى شاشة المشتريات كمثال للتطبيق وتم كتابة التاريخ 30-02-1430 في
حقل تاريخ الفاتورة ، ولكن لم يقبل وقام النظام بتعديل التاريخ أوتوماتيكيا إلى 01-03-1430 هـ مع العلم أن شهر صفر
بناءا على تقويم ام القرى نهايته 30-02-1430هـ .
بمعنى شركة أوراكل عندها شهر صفر 29 يوم وإذا أدخلنا 30 صفر سيتم تحويله مباشرة إلى 1 ربيع الأول .

- بعد تخزين الحقل التاريخ بالهجري في الشاشة يتم تخزينه في قاعدة البيانات على أنه ميلادي .

-----------------------------------------------------------------------------------------------------------------
ثالثاً :
استخدام دوال أوراكل للتحويل التاريخ الميلادي إلى التاريخ الهجري كالتالي :
SELECT TO_CHAR(:rec_date+1,'DD-MM-YYYY','NLS_CALENDAR = ''ENGLISH HIJRAH''')
FROM DUAL ;
OR
SELECT TO_CHAR(:rec_date+1,'DD-MM-YYYY','NLS_CALENDAR = ''ARABIC HIJRAH''')
FROM DUAL ;

عند تنفيذ أمر الاستعلام السابق فإن نتيجة تحويل التاريخ الميلادي التالي 25-02-2009 ستصبح 01-03-1430 ولكن في تقوم أم القرى التاريخ المقابل للميلادي الصحيح هو 30-02-1430

إذن هناك انحراف (الاختلاف) بين تقويم أوراكل الهجري وبين دورة القمر الفعلية والتي نستخدمها لتحديد عدد أيام الشهر الهجري ، وهذا يعني وجود يوم فارق بين التقويم الهجري الفعلي وبين تقويم أوراكل .


ونرجو منكم إفادتنا في حل هذه المشكلة .

وجزاكم الله خير

بتاريخ:

السلام عليكم
انظر هذا الحل قد يفيدك بحسب كلام بعض الإخوان انه يعمل 100% ويحل مشكلة التاريخ الهجري ..
مشاركة للأخ Amateur
http://www.araboug.org/ib/index.php?showtopic=17914

بتاريخ:

السلام عليكم
كلام اخي USER صحيح ... حيث يجيب استخدام فنكشن لتغطية هذه العيوب...

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.