الانتقال إلى المحتوى
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.

التاريخ الهجري

Featured Replies

بتاريخ:

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

ارجو من سيادتكم كيفية التعامل مع التاريخ الهجري حيث لدي مشروع يعتمد علي التاريخ الهجري وقمت بالأتي
عملت تغير
set nls_calendar='arabic hijrah'
الحقيقة اشتغلت كويس بس عملت مشكلة مع الشهور الزوجية مثل 2و4و6 0000 بمعني لو باسجل التاريخ
30-02-1420 او اي سنة اخري يقلب التاريخ الي 1-03 وهكذا
ارجو الافادة
ولكم جزيل الشكر
اريد حل بسيط لان لدي حلول اخري طويلة

بتاريخ:

السلام عليكم ..

لا يوجد يوم 30 صفر 1420 هذا الشهر 29 يوم فقط

والله اعلم

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

HCalander.exe

بتاريخ:
  • كاتب الموضوع

السلام عليكم ورحمة الله وبركاتة
شكرا لك يا اخي علي محاولتك الرد علي مشكلة التاريخ الهجري ولكن المشكلة تحتاج لحل في قاعدة البيانات كما ان المشكلة كما سبق ووضحت هي عدم امكانية تسجيل يوم 30 مع اي شهر زوجي مثل 2و4و6و8و10و12 كمثال
لو اردت تسجيل يوم 30-04-1426 تصبح 1-05-1426
لو اردت تسجيل 30-10-1426 تصبح 1-11-1426

بتاريخ:

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

1- عمل جدول يحتوى على التاريخ الهجري و التاريخ الميلادى المقابل لة
2- التعامل مع التاريخ الهجرى على انة varchar2
3- الاعتماد على قيمة التاريخ الميلادى المقابلة للتاريخ الهجرى المستخدم
هذا يعنى ان التاريخ الميلادى هو الاساس لاجراء اي حسابات و التاريخ الهجرى للعرض فقط
4- عمل form يقوم المستخدم بئدخال السنة المراد ادخالها فى جدول التقويم و بئستخدام امكانية التحويل بين التقويمين فى ()select to_char اقوم بملء الجدول بالقيم
اذا احتوت هذة القيم على اخطاء و هى فى الغالب تحتوى فلن تجد 29-2 او 30-2 لأي عام هجري يقوم المستخدم بتعديلها يدويا ووضع القيم الصحيحه
5- عمل function للتحويل من التاريخ الميلادى للهجرى و العكس بئستخدام القيم الموجودة بالجدول

فى البداية كنت متصور ان هذة الطريقة غير عملية الا انة ثبت لى انة لا يمكن الاعتماد الكلى على التحويل عن طريق nls او select to_char و افضل شىء ان تكون كل القيم قابلة للتعديل

لو حد وصل لطريقة اسهل :( يبلغنا .

  • بعد 3 أسابيع...
بتاريخ:

جرب هذا البرنامج شغال مية مية
PROCEDURE GDATE_TO_HDATE (G_DATE IN DATE,H_DATE OUT VARCHAR2) IS
H_DAY NUMBER(2):=0;
HDAY VARCHAR2(2);
H_MONTH NUMBER(2):=1;
HMONTH VARCHAR2(2);
H_YEAR NUMBER(4):=1;
FGDATE DATE;
I_LOOP NUMBER;
HY NUMBER;
MONTH_NAME VARCHAR2(40);
GDATE DATE;
begin
FGDATE:=TO_DATE('14-JUL-0622 01:01','DD-MON-YYYY HH:MI');
GDATE:=TO_DATE(TO_CHAR(G_DATE,'DD-MON-YYYY')||'01:01','DD-MON-YYYY HH:MI');
I_LOOP:=GDATE-FGDATE;

LOOP
IF I_LOOP<355 THEN
EXIT;
END IF;
IF MOD(H_YEAR,30) IN (2,5,7,10,13,16,18,21,24,26,29) THEN
H_YEAR:=H_YEAR+1;
I_LOOP:=I_LOOP-355;
ELSE
I_LOOP:=I_LOOP-354;
H_YEAR:=H_YEAR+1;
END IF;
END LOOP;

FOR I IN 1..I_LOOP LOOP
H_DAY:=H_DAY+1;
IF H_MONTH IN (1,3,5,7,9,11) AND H_DAY>30 THEN
H_MONTH:=H_MONTH+1;
H_DAY:=1;
END IF;
IF H_MONTH IN(2,4,6,8,10)AND H_DAY>29 THEN
H_MONTH:=H_MONTH+1;
H_DAY:=1;
END IF;
IF MOD(H_YEAR,30) IN (2,5,7,10,13,16,18,21,24,26,29) THEN
IF H_MONTH=12 AND H_DAY>30 THEN
H_MONTH:=H_MONTH+1;
H_DAY:=1;
IF H_MONTH>12 THEN
H_YEAR:=H_YEAR+1;
H_MONTH:=1;
END IF;
END IF;
ELSE IF H_MONTH=12 AND H_DAY>29 THEN
H_MONTH:=H_MONTH+1;
H_DAY:=1;
IF H_MONTH>12 THEN
H_YEAR:=H_YEAR+1;
H_MONTH:=1;
END IF;
END IF;
END IF;
END LOOP;

SELECT DECODE(H_MONTH
,1,'محرم'
,2,'صفر'
,3,'ربيع الأول'
,4,'ربيع الثاني'
,5,'جمادى الأولى'
,6,'جمادى الثانية'
,7,'رجب'
,8,'شعبان'
,9,'رمضان'
,10,'شوال'
,11,'ذو القعدة'
,12,'ذو الحجة',NULL)INTO MONTH_NAME FROM DUAL;

IF H_DAY<10 THEN
HDAY:='0'||TO_CHAR(H_DAY);
ELSE
HDAY:=TO_CHAR(H_DAY);
END IF;
IF H_MONTH<10 THEN
HMONTH:='0'||TO_CHAR(H_MONTH);
ELSE
HMONTH:=TO_CHAR(H_MONTH);
END IF;
-- BY MONTH NAME
--:H_DATE:= (HDAY||'-'||MONTH_NAME||'-'||TO_CHAR(H_YEAR));
-- BY MONTH NUMBER
H_DATE:= (HDAY||'-'||HMONTH||'-'||TO_CHAR(H_YEAR));
END;

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

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

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

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

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

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.