بتاريخ: 26 يونيو 200619 سنة comment_73072 إخواني الأعزاء :طلب من حساب مدة نهاية الخدمة لموظف بحيث تكون على الشكل التاليكام سنة وكام شهر وكام يومقمت بعمل الكود التالي وطبعا السنة مظبوطة ولكن الشهر واليوم مش مضبوطينوالكود كالتالي:select ename,trunc(months_between(sysdate,hiredate)/12) year,round((months_between(sysdate,hiredate)-trunc(months_between(sysdate,hiredate)))*12) months,mod((round(sysdate-hiredate)),30) daysfrom emp;المطوب من الإخوة الكرام جزاهم الله خيريا تعديل الجملة بحيث ناتج الشهر وناتج اليوم يكون صحيحينمرفق أيضا ملف به الكود مفصلأشكركم جميعا , DateBetween.txt تقديم بلاغ
بتاريخ: 26 يونيو 200619 سنة comment_73112 select ename , round(months_between(sysdate,hiredate)/12) year, round((months_between(sysdate,hiredate)/12)*30) monthes, round((months_between(sysdate,hiredate)/12)*265) days from emp1/ تقديم بلاغ
بتاريخ: 26 يونيو 200619 سنة comment_73117 select ename,trunc(months_between(sysdate,hiredate)/12) year,trunc(mod(trunc(months_between(sysdate,hiredate)/12))) month,from emp;بس ما معها ايام لانه انا مش في البيت وما عندي س كيو ال هلا بس انشا الله بحاول ابعتلكياها ما بدي اكتبلك شي غلط بس هدا الكود 100% تم تعديل 26 يونيو 200619 سنة بواسطة moh1412 تقديم بلاغ
بتاريخ: 26 يونيو 200619 سنة كاتب الموضوع comment_73119 مشكور أخي الغاليالحمد الله توصلت لحل لها والحل قمت بتطبيقه على البرنامج الذي أقوم بعمل لشئون الموظفينوالكود تم تعديله عليه وكتابته من داخل الفور على وكان كالتاليdeclare sys_day NUMBER; sys_month NUMBER; sys_year NUMBER; st_day NUMBER; st_month NUMBER; st_year NUMBER;begin SYS_DAY := TO_CHAR(:SERV_FINAL_DATE, 'DD'); SYS_MONTH := TO_CHAR(:SERV_FINAL_DATE, 'MM'); SYS_YEAR := TO_CHAR(:SERV_FINAL_DATE, 'YYYY'); ST_DAY := TO_CHAR(:HIREDATE, 'DD'); ST_MONTH := TO_CHAR(:HIREDATE, 'MM'); ST_YEAR := TO_CHAR(:HIREDATE, 'YYYY'); IF TO_NUMBER(SYS_DAY) < TO_NUMBER(ST_DAY) THEN SYS_DAY := TO_NUMBER(SYS_DAY) + 30; SYS_MONTH := TO_NUMBER(SYS_MONTH) - 1; END IF; IF TO_NUMBER(SYS_MONTH) < TO_NUMBER(ST_MONTH) THEN SYS_MONTH := TO_NUMBER(SYS_MONTH) + 12; SYS_YEAR := TO_NUMBER(SYS_YEAR)- 1; END IF; :SERV_PER_DAY := TO_NUMBER(SYS_DAY) - TO_NUMBER(ST_DAY); :SERV_PER_MONTH := TO_NUMBER(SYS_MONTH) - TO_NUMBER(ST_MONTH); :SERV_PER_YAER := TO_NUMBER(SYS_YEAR) - TO_NUMBER(ST_YEAR);EXCEPTION WHEN NO_DATA_FOUND THEN NULL; end;هذا الكود يمكن ينتفع به أي أخ وتحياتي للجميع الأعضاء في المنتدى الغالي علينانفس الكود مرفق في ملف نصي datet.txt تقديم بلاغ
بتاريخ: 27 يونيو 200619 سنة comment_73192 http://www.araboug.org/ib/index.php?showtopic=846&hl= تقديم بلاغ
بتاريخ: 29 يونيو 200619 سنة comment_73381 بسم الله الرحمن الرحيماخى الكريم انا عندى نفس الشغلة وهذا الكود شغال ميه المية declare year1 number ; y number; d number; m number; begin year1:=(:END_SERVICE_DATE-:MF_START_DATE); d:=year1 / 365; :year:=trunc(d); d:=year1 mod 365; m:=d / 30; :month:=trunc(m); :day:=d mod 30; end; end if; end; جربه واعطينى ردك تقديم بلاغ
بتاريخ: 29 يونيو 200619 سنة كاتب الموضوع comment_73382 مشكور أخي على استجابتك بس أنا قمت بعمل الكود السابق وشغال الحمد الله مع تحياتي للجميع تقديم بلاغ
بتاريخ: 23 يونيو 200817 سنة comment_131828 استخدم extract functin select extract(day from hiredate) from emp;select extract(month from hiredate) from emp;select extract(year from hiredate) from emp; تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.