بتاريخ: 23 أبريل 200520 سنة comment_33889 السلام عليكملدي قاعدة بيانات تاريخها منسق على الميلادي و لا استطيع تحويله الى هجري لأن كل البيانات فيه على الميلادي .الآن أريد عمل مشروع آخر على نفس القاعدة و بمستخدم مختلف , عباره عن ادخال فواتير لها قيمة و تاريخ , التاريخ يجب أن يكون بالهجري لأنني أريد متابعة و رقابة هذه الفواتير بناء على تاريخها الهجري .لذلك أريد أن يكون تنسيق حقل التاريخ بالهجريو لكن أريد بعد ذلك أن يتم تحويل قيمة هذا الحقل ( اي التاريخ الهجري ) الى تاريخ ميلاديلأنني اريد توزيع قيمة المبالغ المدفوعه بناء على تاريخها الميلادي و ذلك لأغراض الميزانيهفهل أجد حلا لديكم تم تعديل 23 أبريل 200520 سنة بواسطة rudwan تقديم بلاغ
بتاريخ: 23 أبريل 200520 سنة comment_33893 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 تقديم بلاغ
بتاريخ: 23 أبريل 200520 سنة comment_33899 السلام عليكم ورحمة الله وبركاتههل هذه الطريقة تصلح مع الفورمز على سبيل المثال لدينا تاريخ هجري على الشاشة هل يمكن عرض المقابل له بالميلادي والعكس دون ان نتعامل مع sysdate تقديم بلاغ
بتاريخ: 23 أبريل 200520 سنة كاتب الموضوع comment_33938 السلام عليكمالكود الذي وضعته يمكن أن يحول من ميلادي الى هجريلكن الذي أريده هو أن أتعامل مع التاريخ الهجري بشكل أصولي , اي أريد معرفة التاريخالميلادي المقابل للتاريخ الهجري الذي أدخلته , و ذلك بدون أن أغير التاريخ الأساسي في قاعدة البيانات تقديم بلاغ
بتاريخ: 26 أبريل 200520 سنة comment_34266 جرب بناء هذا البكج وادعيلي ونادي فقط على اول بروسيجر والباقي يتولاها البكج ( عمايل اديا وحياة عنيا ) 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; تقديم بلاغ
بتاريخ: 27 أبريل 200520 سنة كاتب الموضوع comment_34317 بارك الله فيك أخي الكريمرح ادعيلك من كل قلبيلكن ارجو التكرم بشرح مايلي :ما هو تنسيق الحقل H_DATE ؟ هل هو varchar2 ?اذا كان كذلك فان مشكلتي ستنحل باذن اللهو ذاا كان تنسيقه تاريخ هذا معناه أنني يجب أن لغير تنسيق التاريخ في قاعدة البيانات عندي من ميلادي الى هجري , و هذا شي مستحيل لأن كل البرامج المبنيه على هذه القاعده تعمل بالميلادي تقديم بلاغ
بتاريخ: 27 أبريل 200520 سنة comment_34323 الأخ ash_khalafالسلام عليكم ورحمة الله وبركاتهأشكرك شكرا جزيلا على الباكج المرفق ولكن لاحظت أن اول بروسيدر فيه لعرض السنة ، ارجو وضع مثال لتنفيذ الباكج في الفورم تقديم بلاغ
بتاريخ: 27 أبريل 200520 سنة comment_34326 السلام عليكم ورحمة الله وبركاتهالحمد لله استخدمت الباكج ولكن في SQL وجاري استخدامه في ال Form وجزاك الله خيرا ، استخدمت البروسيدر الثالث في الباكج تقديم بلاغ
بتاريخ: 27 أبريل 200520 سنة comment_34340 مرة أخرى جزاكم الله خيرا ، الحمد لله استخدمت الباكج في الفورمز تقديم بلاغ
بتاريخ: 30 أبريل 200520 سنة comment_34638 الاخ رضوان يجب استخدام البروسيجر الرابع HDATE_TO_GDATE وتنسيق التاريخ VARCHAR2وباسي شكل DD-MM-YYYYOR DD/MM/YYYY تقديم بلاغ
بتاريخ: 6 مايو 200718 سنة comment_99035 من فضللك يااخى كيف استخدم الباكيج فى الفورم و SQLعلما بانى اريد تحويل التاريخ فى الداتا بيزلتظهر فى الفرم من هجرى الى ميلادىوشكرا تقديم بلاغ
بتاريخ: 3 فبراير 201016 سنة comment_184051 أخي الحبيب يمكنك ان تجرب هذا الكود 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 ; تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.