بتاريخ: 6 أبريل 200520 سنة comment_32274 السلام عليكم ورحمة الله وبركاتة ارجو من سيادتكم كيفية التعامل مع التاريخ الهجري حيث لدي مشروع يعتمد علي التاريخ الهجري وقمت بالأتي عملت تغير set nls_calendar='arabic hijrah'الحقيقة اشتغلت كويس بس عملت مشكلة مع الشهور الزوجية مثل 2و4و6 0000 بمعني لو باسجل التاريخ30-02-1420 او اي سنة اخري يقلب التاريخ الي 1-03 وهكذا ارجو الافادة ولكم جزيل الشكر اريد حل بسيط لان لدي حلول اخري طويلة تقديم بلاغ
بتاريخ: 6 أبريل 200520 سنة comment_32331 السلام عليكم ..لا يوجد يوم 30 صفر 1420 هذا الشهر 29 يوم فقط والله اعلم مرفق برنامج تحويل تواريخ من ميلادى الى هجري والعكس HCalander.exe تقديم بلاغ
بتاريخ: 7 أبريل 200520 سنة كاتب الموضوع comment_32342 السلام عليكم ورحمة الله وبركاتةشكرا لك يا اخي علي محاولتك الرد علي مشكلة التاريخ الهجري ولكن المشكلة تحتاج لحل في قاعدة البيانات كما ان المشكلة كما سبق ووضحت هي عدم امكانية تسجيل يوم 30 مع اي شهر زوجي مثل 2و4و6و8و10و12 كمثال لو اردت تسجيل يوم 30-04-1426 تصبح 1-05-1426 لو اردت تسجيل 30-10-1426 تصبح 1-11-1426 تقديم بلاغ
بتاريخ: 7 أبريل 200520 سنة comment_32359 السلام عليكم ورحمة الله وبركاته،، واجهت نفس المشكلة و تغلبت عليها كالتالى1- عمل جدول يحتوى على التاريخ الهجري و التاريخ الميلادى المقابل لة2- التعامل مع التاريخ الهجرى على انة varchar23- الاعتماد على قيمة التاريخ الميلادى المقابلة للتاريخ الهجرى المستخدم هذا يعنى ان التاريخ الميلادى هو الاساس لاجراء اي حسابات و التاريخ الهجرى للعرض فقط 4- عمل form يقوم المستخدم بئدخال السنة المراد ادخالها فى جدول التقويم و بئستخدام امكانية التحويل بين التقويمين فى ()select to_char اقوم بملء الجدول بالقيم اذا احتوت هذة القيم على اخطاء و هى فى الغالب تحتوى فلن تجد 29-2 او 30-2 لأي عام هجري يقوم المستخدم بتعديلها يدويا ووضع القيم الصحيحه5- عمل function للتحويل من التاريخ الميلادى للهجرى و العكس بئستخدام القيم الموجودة بالجدولفى البداية كنت متصور ان هذة الطريقة غير عملية الا انة ثبت لى انة لا يمكن الاعتماد الكلى على التحويل عن طريق nls او select to_char و افضل شىء ان تكون كل القيم قابلة للتعديل لو حد وصل لطريقة اسهل يبلغنا . تقديم بلاغ
بتاريخ: 26 أبريل 200520 سنة comment_34270 جرب هذا البرنامج شغال مية ميةPROCEDURE GDATE_TO_HDATE (G_DATE IN DATE,H_DATE OUT VARCHAR2) ISH_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;beginFGDATE:=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 THENEXIT;END IF;IF MOD(H_YEAR,30) IN (2,5,7,10,13,16,18,21,24,26,29) THENH_YEAR:=H_YEAR+1;I_LOOP:=I_LOOP-355;ELSEI_LOOP:=I_LOOP-354;H_YEAR:=H_YEAR+1;END IF;END LOOP; FOR I IN 1..I_LOOP LOOPH_DAY:=H_DAY+1;IF H_MONTH IN (1,3,5,7,9,11) AND H_DAY>30 THENH_MONTH:=H_MONTH+1;H_DAY:=1;END IF;IF H_MONTH IN(2,4,6,8,10)AND H_DAY>29 THENH_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) THENIF H_MONTH=12 AND H_DAY>30 THENH_MONTH:=H_MONTH+1;H_DAY:=1;IF H_MONTH>12 THENH_YEAR:=H_YEAR+1;H_MONTH:=1;END IF;END IF;ELSE IF H_MONTH=12 AND H_DAY>29 THENH_MONTH:=H_MONTH+1;H_DAY:=1;IF H_MONTH>12 THENH_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 THENHDAY:='0'||TO_CHAR(H_DAY);ELSEHDAY:=TO_CHAR(H_DAY);END IF;IF H_MONTH<10 THENHMONTH:='0'||TO_CHAR(H_MONTH);ELSEHMONTH:=TO_CHAR(H_MONTH);END IF;-- BY MONTH NAME--:H_DATE:= (HDAY||'-'||MONTH_NAME||'-'||TO_CHAR(H_YEAR));-- BY MONTH NUMBERH_DATE:= (HDAY||'-'||HMONTH||'-'||TO_CHAR(H_YEAR));END; تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.