بتاريخ: 16 ديسمبر 200520 سنة comment_54437 اريد ان اكتب دالة تقوم بحسام كم عدد يوم جمعة بين تاريخين 9-4-1983 و 17-12-2005 اى ان الدالة تقوم بايجاد كم يوم جمعة بين التاريخين؟؟وشكرا تقديم بلاغ
بتاريخ: 17 ديسمبر 200520 سنة comment_54509 create or replace function friday_number (first_Date in date,second_date in date) return number is number_friday number:=0 ; friday_date date:=first_date; begin while friday_date<second_date loop select next_day(friday_date,6) into friday_Date from dual; number_friday:=number_friday+1; end loop; if friday_date=second_date then return number_friday; else number_friday:=number_friday-1; return number_friday; end if ; end; تقديم بلاغ
بتاريخ: 17 ديسمبر 200520 سنة comment_54523 الجواب 1149 يوم جمعهبعض التعديلات المهمه على ال function create or replace function friday_number (first_Date in date,second_date in date) return number is number_friday number:=0 ; friday_date date:=first_date; begin while to_date(friday_date,'dd-mm-rr')<to_date(second_date,'dd-mm-rr') loop select next_day(friday_date,6) into friday_Date from dual; --friday_date:=x; number_friday:=number_friday+1; end loop; if friday_date=second_date then return number_friday; else number_friday:=number_friday-1; return number_friday; end if ; end; تقديم بلاغ
بتاريخ: 18 ديسمبر 200520 سنة comment_54607 السلام عليكمهذه اول مشاركة لي في هذا الموقعارجو ان تكون مفيدة الاجابة ببساطة هي :select trunc(to_number(end_date - next_day(start_date - 1, 'Friday'))/7) + 1 from dualاما اذا كانت ال DB لديك بالعربي استبدل (Friday) بـ (الجمعة)واي سؤال يمكن الاستفسار [email protected] تقديم بلاغ
بتاريخ: 18 ديسمبر 200520 سنة comment_54662 السلام عليكم, نستطيع حسابة الاسابيع في الدالة الاتية:- CREATE FUNCTION FUNC_FRIDAY IS BEGIN SELECT MONTHS_BTWEEN( '17-DEC-05', '09-APR-83') * 4 -- Multiply by 4 number of weeks per months FROM DUAL ; END ; / ثم تكتب الامر الاتي:- SQL> SELECT FUNC_FRIDAY FROM DUAL ; تقديم بلاغ
بتاريخ: 17 يوليو 201015 سنة comment_196814 CREATE OR REPLACE Function HR.FriDayCNT(d1 in date,d2 in date) return number as FridayNO number; DStart Date :=d1; begin FridayNO :=0; while DStart <= d2 loop if trim(to_char(DStart,'day')) = 'friday' then FridayNO :=FridayNO +1; end if; DStart:=DStart+1; end loop ; return FridayNO; end FriDayCNT; / select FriDayCNT(sysdate-180,sysdate) from dual; تقديم بلاغ
بتاريخ: 17 يوليو 201015 سنة comment_196820 CREATE OR REPLACE Function HR.FriDayCNT2(d1 in date,d2 in date) return number as FridayNO number; DStart Date :=d1; begin FridayNO :=0; if trim(to_char(DStart,'day')) = 'friday' then FridayNO :=FridayNO +1; DStart:=DStart+1; end if; while d2-DStart >=7 loop select next_day(DStart,'friday') into DStart from dual; FridayNO :=FridayNO +1; end loop ; return FridayNO; end FriDayCNT2; تقديم بلاغ
بتاريخ: 19 يوليو 201015 سنة comment_197003 انا عندي حل إن شاء الله سهل وبسيط جدا وجربته وشغال صح.... Create or Replace function calc_date(fromdate date,todate date) return number is date0 date := fromdate; x number :=0; y varchar2(1) :=' '; begin Loop select to_char(date0,'d') into y from dual ; if y = '7' then x := x+1; else x := x; end if; date0 := date0 + 1; exit when date0 > todate; end loop; return x; end; تم تعديل 19 يوليو 201015 سنة بواسطة m_hassan_k تقديم بلاغ
بتاريخ: 19 يوليو 201015 سنة comment_197004 جرب هذا الحل البسيطوعلى فكرة يعطيك نتيجة 1183 SELECT COUNT (*) fridays FROM (SELECT DECODE (TO_CHAR (:from_dat + ROWNUM - 1,'Dy','nls_date_language=english'),'Fri', 'Friday') DAY FROM all_objects WHERE ROWNUM < :to_dat - :from_dat) WHERE DAY IS NOT NULL تقديم بلاغ
بتاريخ: 27 سبتمبر 201015 سنة comment_200616 السلام عليكم ورحمة الله وبركاته هذا اخى كودبسيط جدا CREATE OR REPLACE FUNCTION calc_friday (end_date IN DATE, start_date IN DATE) RETURN NUMBERIS v NUMBER;BEGIN LOOP SELECT TO_DATE (:end_date, 'dd-mm-yyyy') - TO_DATE (:start_date, 'dd-mm-yyyy') + 1 INTO x FROM DUAL; SELECT TO_CHAR (TO_DATE (:start_date, 'dd-mm-yyyy') + z, 'd') INTO y FROM DUAL; z := z + 1; IF y = 6 THEN v := v + 1; END IF; EXIT WHEN z = x; END LOOP; RETURN v;END; تقديم بلاغ
بتاريخ: 28 سبتمبر 201015 سنة comment_200688 السلام عليكم للحصول على ايام الجمعة بين تاريخين تستخدم الفانكشن------------ FUNCTION CLC_FRIDAYS ( p_frm_date date , p_to_date date ) RETURN NUMBER is chk_day date; days_count number := 0 ; begin chk_day := p_frm_date ; loop IF UPPER(TO_CHAR(chk_day,'FMDY')) IN ('FRI','الجمعة') then days_count := days_count + 1 ; end if; exit when chk_day = p_to_date; chk_day := chk_day + 1 ; end loop; return nvl(days_count ,0) ; end; -----------ونقوم باستدعائها كالتالى BEGIN CNT := CLC_FRIDAYS ( TO_DATE('09-04-1983','DD-MM-RRRR') , TO_DATE('17-12-2005','DD-MM-RRRR') ) ; RETURN NVL(CNT,0); end; وتكون النتيجة 1184 تقديم بلاغ
بتاريخ: 23 أكتوبر 201015 سنة comment_202036 select (sysdate-hire_date)/7 from employeeswhere employee_id=100;ح حيث hire_date هو تاريخ تعيين الموظف اي ان الجملة تحدد الفرق بين التاريخ الحالي وتاريخ تعيين الموظف بالقسمة على سبعة ينتج عددالاسابيع وهو نفسة عدد اسام الجمعة وتقدر ان تجعل هذا الكود في دالة ترجع رقم تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.