rudwan بتاريخ: 23 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 23 أبريل 2005 (معدل) السلام عليكملدي قاعدة بيانات تاريخها منسق على الميلادي و لا استطيع تحويله الى هجري لأن كل البيانات فيه على الميلادي .الآن أريد عمل مشروع آخر على نفس القاعدة و بمستخدم مختلف , عباره عن ادخال فواتير لها قيمة و تاريخ , التاريخ يجب أن يكون بالهجري لأنني أريد متابعة و رقابة هذه الفواتير بناء على تاريخها الهجري .لذلك أريد أن يكون تنسيق حقل التاريخ بالهجريو لكن أريد بعد ذلك أن يتم تحويل قيمة هذا الحقل ( اي التاريخ الهجري ) الى تاريخ ميلاديلأنني اريد توزيع قيمة المبالغ المدفوعه بناء على تاريخها الميلادي و ذلك لأغراض الميزانيهفهل أجد حلا لديكم تم تعديل 23 أبريل 2005 بواسطة rudwan اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
natour بتاريخ: 23 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 23 أبريل 2005 the following should help you convert into hijri during the migration process . select to_char (sysdate,'dd mm yyyy', 'nls_calendar =''arabic hijrah''') into b from dual ;run a search on this forum to find all hijri topics اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mohd_sayed_mohd بتاريخ: 23 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 23 أبريل 2005 السلام عليكم ورحمة الله وبركاتههل هذه الطريقة تصلح مع الفورمز على سبيل المثال لدينا تاريخ هجري على الشاشة هل يمكن عرض المقابل له بالميلادي والعكس دون ان نتعامل مع sysdate اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
rudwan بتاريخ: 23 أبريل 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 23 أبريل 2005 السلام عليكمالكود الذي وضعته يمكن أن يحول من ميلادي الى هجريلكن الذي أريده هو أن أتعامل مع التاريخ الهجري بشكل أصولي , اي أريد معرفة التاريخالميلادي المقابل للتاريخ الهجري الذي أدخلته , و ذلك بدون أن أغير التاريخ الأساسي في قاعدة البيانات اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ash_khalaf بتاريخ: 26 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 26 أبريل 2005 جرب بناء هذا البكج وادعيلي ونادي فقط على اول بروسيجر والباقي يتولاها البكج ( عمايل اديا وحياة عنيا ) CREATE OR REPLACE PACKAGE DATE_CONVERTER IS PROCEDURE HDATE_YEAR (H_DATE IN VARCHAR2,H_YEAR OUT NUMBER); PROCEDURE HDATE_MONTH (H_DATE IN VARCHAR2,H_MONTH OUT NUMBER); PROCEDURE HDATE_DAY (H_DATE IN VARCHAR2,H_DAY OUT NUMBER); PROCEDURE HDATE_TO_GDATE (H_DATE IN VARCHAR2,G_DATE OUT DATE); END; CREATE OR REPLACE PACKAGE BODY DATE_CONVERTER IS /******************** PROCEDURE HDATE_YEAR **********************************/ PROCEDURE HDATE_YEAR (H_DATE IN VARCHAR2,H_YEAR OUT NUMBER) IS BEGIN SELECT TO_NUMBER(DECODE(LENGTH(DECODE(LENGTH(SUBSTR(H_DATE, DECODE(INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), 0, INSTR(H_DATE, '-', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1))+1, 4)),1, '0'||SUBSTR(H_DATE, DECODE(INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), 0, INSTR(H_DATE, '-', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1))+1, 4), SUBSTR(H_DATE, DECODE(INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), 0, INSTR(H_DATE, '-', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1))+1, 4))), 4, DECODE(LENGTH(SUBSTR(H_DATE, DECODE(INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), 0,INSTR(H_DATE, '-', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1))+1, 4)), 1, '0'||SUBSTR(H_DATE, DECODE(INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), 0, INSTR(H_DATE, '-', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1))+1, 4), SUBSTR(H_DATE, DECODE(INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), 0, INSTR(H_DATE, '-', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1))+1, 4)), 2, DECODE(LENGTH(SUBSTR(H_DATE, 1, DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))-1)), 1, '0'||SUBSTR(H_DATE, 1, DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))-1), 2, SUBSTR(H_DATE, 1, DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))-1), SUBSTR(H_DATE, 1, DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))-1)), DECODE(LENGTH(SUBSTR(H_DATE, DECODE(INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), 0,INSTR(H_DATE, '-', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1))+1, 4)), 1, '0'||SUBSTR(H_DATE, DECODE(INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), 0, INSTR(H_DATE, '-', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1))+1, 4), SUBSTR(H_DATE, DECODE(INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'),0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), 0, INSTR(H_DATE, '-', DECODE(INSTR(H_DATE, '/'),0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'),0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1))+1, 4)))) INTO H_YEAR FROM DUAL; END; /******************** PROCEDURE HDATE_MONTH **********************************/ PROCEDURE HDATE_MONTH (H_DATE IN VARCHAR2,H_MONTH OUT NUMBER) IS MONTH_NAME VARCHAR2(20); BEGIN SELECT DECODE(LENGTH(SUBSTR(H_DATE, DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1, (DECODE(INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), 0, INSTR(H_DATE, '-', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1))-DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/')))-1)), 1, '0'||SUBSTR(H_DATE, DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1, (DECODE(INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), 0, INSTR(H_DATE, '-', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1))-DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/')))-1), 2, SUBSTR(H_DATE, DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1, (DECODE(INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), 0, INSTR(H_DATE, '-', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1))-DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/')))-1), SUBSTR(H_DATE, DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1, (DECODE(INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), 0,INSTR(H_DATE, '-', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'),INSTR(H_DATE, '/'))+1))- DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/')))-1)) INTO MONTH_NAME FROM DUAL; IF LENGTH(MONTH_NAME)>2 THEN SELECT TO_NUMBER(DECODE(MONTH_NAME ,'محرم',1 ,'صفر',2 ,'ربيع الأول',3 ,'ربيع الثاني',4 ,'جمادى الأولى',5 ,'جمادى الثانية',6 ,'رجب',7 ,'شعبان',8 ,'رمضان',9 ,'شوال',10 ,'ذو القعدة',11 ,'ذو الحجة',11,0))INTO H_MONTH FROM DUAL; ELSE H_MONTH:=TO_NUMBER(MONTH_NAME); END IF; END; /******************** PROCEDURE HDATE_DAY **********************************/ PROCEDURE HDATE_DAY (H_DATE IN VARCHAR2,H_DAY OUT NUMBER)IS BEGIN SELECT DECODE(LENGTH(DECODE(LENGTH(SUBSTR(H_DATE, 1, DECODE(INSTR(H_DATE, '/'), 0,INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))-1)), 1,'0'||SUBSTR(H_DATE, 1, DECODE(INSTR(H_DATE, '/'),0,INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))-1), 2,SUBSTR(H_DATE, 1, DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))-1), SUBSTR(H_DATE, 1, DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))-1))), 2,DECODE(LENGTH(SUBSTR(H_DATE, 1, DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))-1)), 1, '0'||SUBSTR(H_DATE, 1, DECODE(INSTR(H_DATE, '/'),0,INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))-1), 2, SUBSTR(H_DATE, 1, DECODE(INSTR(H_DATE, '/'),0,INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))-1), SUBSTR(H_DATE, 1, DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))-1)), 4, DECODE(LENGTH(SUBSTR(H_DATE, DECODE(INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), 0, INSTR(H_DATE, '-', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1))+1, 4)), 1, '0'||SUBSTR(H_DATE, DECODE(INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'),0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), 0, INSTR(H_DATE, '-', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1))+1, 4), SUBSTR(H_DATE, DECODE(INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), 0, INSTR(H_DATE, '-', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1), INSTR(H_DATE, '/', DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))+1))+1, 4)), DECODE(LENGTH(SUBSTR(H_DATE, 1, DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))-1)), 1, '0'||SUBSTR(H_DATE, 1, DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))-1), 2,SUBSTR(H_DATE, 1, DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))-1), SUBSTR(H_DATE,1, DECODE(INSTR(H_DATE, '/'), 0, INSTR(H_DATE, '-'), INSTR(H_DATE, '/'))-1))) INTO H_DAY FROM DUAL; END; /******************** PROCEDURE HDATE_TO_GDATE **********************************/ PROCEDURE HDATE_TO_GDATE (H_DATE IN VARCHAR2,G_DATE OUT DATE) IS H_DAY NUMBER(2); H_MONTH NUMBER(2); H_YEAR NUMBER(4); I_LOOP NUMBER:=0; HY NUMBER; FGDATE DATE; begin FGDATE:=TO_DATE('14-JUL-0622','DD-MON-YYYY'); HDATE_DAY(H_DATE,H_DAY); HDATE_MONTH(H_DATE,H_MONTH); HDATE_YEAR(H_DATE,H_YEAR); H_YEAR:=H_YEAR-1; H_MONTH:=H_MONTH-1; FOR I IN 1..H_YEAR LOOP HY:=TRUNC(I/30)*30; IF (I-HY) IN (2,5,7,10,13,16,18,21,24,26,29) THEN I_LOOP:=I_LOOP+355; ELSE I_LOOP:=I_LOOP+354; END IF; END LOOP; FOR J IN 1..H_MONTH LOOP IF J IN (1,3,5,7,9,11) THEN I_LOOP:=I_LOOP+30; END IF; IF J IN(2,4,6,8,10) THEN I_LOOP:=I_LOOP+29; END IF; HY:=TRUNC(H_YEAR/30)*30; IF J=12 AND (H_YEAR-HY) IN (2,5,7,10,13,16,18,21,24,26,29) THEN I_LOOP:=I_LOOP+30; ELSIF J=12 AND (H_YEAR-HY) NOT IN (2,5,7,10,13,16,18,21,24,26,29) THEN I_LOOP:=I_LOOP+29; END IF; END LOOP; I_LOOP:=I_LOOP+H_DAY; FGDATE:=FGDATE+I_LOOP; G_DATE:=TO_DATE(TO_CHAR(FGDATE,'DD-MON-YYYY'),'DD-MON-YYYY'); END; END; 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
rudwan بتاريخ: 27 أبريل 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 27 أبريل 2005 بارك الله فيك أخي الكريمرح ادعيلك من كل قلبيلكن ارجو التكرم بشرح مايلي :ما هو تنسيق الحقل H_DATE ؟ هل هو varchar2 ?اذا كان كذلك فان مشكلتي ستنحل باذن اللهو ذاا كان تنسيقه تاريخ هذا معناه أنني يجب أن لغير تنسيق التاريخ في قاعدة البيانات عندي من ميلادي الى هجري , و هذا شي مستحيل لأن كل البرامج المبنيه على هذه القاعده تعمل بالميلادي اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mohd_sayed_mohd بتاريخ: 27 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 27 أبريل 2005 الأخ ash_khalafالسلام عليكم ورحمة الله وبركاتهأشكرك شكرا جزيلا على الباكج المرفق ولكن لاحظت أن اول بروسيدر فيه لعرض السنة ، ارجو وضع مثال لتنفيذ الباكج في الفورم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mohd_sayed_mohd بتاريخ: 27 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 27 أبريل 2005 السلام عليكم ورحمة الله وبركاتهالحمد لله استخدمت الباكج ولكن في SQL وجاري استخدامه في ال Form وجزاك الله خيرا ، استخدمت البروسيدر الثالث في الباكج اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mohd_sayed_mohd بتاريخ: 27 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 27 أبريل 2005 معذرة أقصد استخدمت البروسيدر الرابع اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mohd_sayed_mohd بتاريخ: 27 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 27 أبريل 2005 مرة أخرى جزاكم الله خيرا ، الحمد لله استخدمت الباكج في الفورمز اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ash_khalaf بتاريخ: 30 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 30 أبريل 2005 الاخ رضوان يجب استخدام البروسيجر الرابع HDATE_TO_GDATE وتنسيق التاريخ VARCHAR2وباسي شكل DD-MM-YYYYOR DD/MM/YYYY اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
waleedtot بتاريخ: 6 مايو 2007 تقديم بلاغ مشاركة بتاريخ: 6 مايو 2007 من فضللك يااخى كيف استخدم الباكيج فى الفورم و SQLعلما بانى اريد تحويل التاريخ فى الداتا بيزلتظهر فى الفرم من هجرى الى ميلادىوشكرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
prowael بتاريخ: 3 فبراير 2010 تقديم بلاغ مشاركة بتاريخ: 3 فبراير 2010 أخي الحبيب يمكنك ان تجرب هذا الكود select to_char (sysdate,'dd/mm/yyyy', 'nls_calendar =''arabic hijrah''') from dual ; select to_char(sysdate,'dd/mm/yyyy', 'nls_calendar =''Gregorian''') from dual ; 3 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.