ahmedali بتاريخ: 26 يونيو 2006 تقديم بلاغ مشاركة بتاريخ: 26 يونيو 2006 إخواني الأعزاء :طلب من حساب مدة نهاية الخدمة لموظف بحيث تكون على الشكل التاليكام سنة وكام شهر وكام يومقمت بعمل الكود التالي وطبعا السنة مظبوطة ولكن الشهر واليوم مش مضبوطينوالكود كالتالي: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 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
blackpanther9090 بتاريخ: 26 يونيو 2006 تقديم بلاغ مشاركة بتاريخ: 26 يونيو 2006 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/ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
moh1412 بتاريخ: 26 يونيو 2006 تقديم بلاغ مشاركة بتاريخ: 26 يونيو 2006 (معدل) select ename,trunc(months_between(sysdate,hiredate)/12) year,trunc(mod(trunc(months_between(sysdate,hiredate)/12))) month,from emp;بس ما معها ايام لانه انا مش في البيت وما عندي س كيو ال هلا بس انشا الله بحاول ابعتلكياها ما بدي اكتبلك شي غلط بس هدا الكود 100% تم تعديل 26 يونيو 2006 بواسطة moh1412 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ahmedali بتاريخ: 26 يونيو 2006 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 26 يونيو 2006 مشكور أخي الغاليالحمد الله توصلت لحل لها والحل قمت بتطبيقه على البرنامج الذي أقوم بعمل لشئون الموظفينوالكود تم تعديله عليه وكتابته من داخل الفور على وكان كالتالي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 يونيو 2006 تقديم بلاغ مشاركة بتاريخ: 27 يونيو 2006 http://www.araboug.org/ib/index.php?showtopic=846&hl= اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
tmiy220 بتاريخ: 27 يونيو 2006 تقديم بلاغ مشاركة بتاريخ: 27 يونيو 2006 مشكورا على مشاركتك الطيبة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
kamal480 بتاريخ: 29 يونيو 2006 تقديم بلاغ مشاركة بتاريخ: 29 يونيو 2006 بسم الله الرحمن الرحيماخى الكريم انا عندى نفس الشغلة وهذا الكود شغال ميه المية 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; جربه واعطينى ردك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ahmedali بتاريخ: 29 يونيو 2006 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 29 يونيو 2006 مشكور أخي على استجابتك بس أنا قمت بعمل الكود السابق وشغال الحمد الله مع تحياتي للجميع اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ابومحمد2008 بتاريخ: 23 يونيو 2008 تقديم بلاغ مشاركة بتاريخ: 23 يونيو 2008 استخدم extract functin select extract(day from hiredate) from emp;select extract(month from hiredate) from emp;select extract(year from hiredate) from emp; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.