الانتقال إلى المحتوى

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


reda_hamed

Recommended Posts

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

ارجو من سيادتكم كيفية التعامل مع التاريخ الهجري حيث لدي مشروع يعتمد علي التاريخ الهجري وقمت بالأتي
عملت تغير
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;

رابط هذا التعليق
شارك

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

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

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

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

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