reda_hamed بتاريخ: 6 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 6 أبريل 2005 السلام عليكم ورحمة الله وبركاتة ارجو من سيادتكم كيفية التعامل مع التاريخ الهجري حيث لدي مشروع يعتمد علي التاريخ الهجري وقمت بالأتي عملت تغير set nls_calendar='arabic hijrah'الحقيقة اشتغلت كويس بس عملت مشكلة مع الشهور الزوجية مثل 2و4و6 0000 بمعني لو باسجل التاريخ30-02-1420 او اي سنة اخري يقلب التاريخ الي 1-03 وهكذا ارجو الافادة ولكم جزيل الشكر اريد حل بسيط لان لدي حلول اخري طويلة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Amgad بتاريخ: 6 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 6 أبريل 2005 السلام عليكم ..لا يوجد يوم 30 صفر 1420 هذا الشهر 29 يوم فقط والله اعلم مرفق برنامج تحويل تواريخ من ميلادى الى هجري والعكس HCalander.exe اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
reda_hamed بتاريخ: 7 أبريل 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 7 أبريل 2005 السلام عليكم ورحمة الله وبركاتةشكرا لك يا اخي علي محاولتك الرد علي مشكلة التاريخ الهجري ولكن المشكلة تحتاج لحل في قاعدة البيانات كما ان المشكلة كما سبق ووضحت هي عدم امكانية تسجيل يوم 30 مع اي شهر زوجي مثل 2و4و6و8و10و12 كمثال لو اردت تسجيل يوم 30-04-1426 تصبح 1-05-1426 لو اردت تسجيل 30-10-1426 تصبح 1-11-1426 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ahmed_tlawy بتاريخ: 7 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 7 أبريل 2005 السلام عليكم ورحمة الله وبركاته،، واجهت نفس المشكلة و تغلبت عليها كالتالى1- عمل جدول يحتوى على التاريخ الهجري و التاريخ الميلادى المقابل لة2- التعامل مع التاريخ الهجرى على انة varchar23- الاعتماد على قيمة التاريخ الميلادى المقابلة للتاريخ الهجرى المستخدم هذا يعنى ان التاريخ الميلادى هو الاساس لاجراء اي حسابات و التاريخ الهجرى للعرض فقط 4- عمل form يقوم المستخدم بئدخال السنة المراد ادخالها فى جدول التقويم و بئستخدام امكانية التحويل بين التقويمين فى ()select to_char اقوم بملء الجدول بالقيم اذا احتوت هذة القيم على اخطاء و هى فى الغالب تحتوى فلن تجد 29-2 او 30-2 لأي عام هجري يقوم المستخدم بتعديلها يدويا ووضع القيم الصحيحه5- عمل function للتحويل من التاريخ الميلادى للهجرى و العكس بئستخدام القيم الموجودة بالجدولفى البداية كنت متصور ان هذة الطريقة غير عملية الا انة ثبت لى انة لا يمكن الاعتماد الكلى على التحويل عن طريق nls او select to_char و افضل شىء ان تكون كل القيم قابلة للتعديل لو حد وصل لطريقة اسهل يبلغنا . اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ash_khalaf بتاريخ: 26 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 26 أبريل 2005 جرب هذا البرنامج شغال مية مية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; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.