بتاريخ: 22 نوفمبر 200619 سنة comment_83796 السلام عليكم اخواني انا عندي هذي الكود الذي يقوم بتحويل التاريخ الميلادي الي الهجري قم بتنفيذ هذا الfunction اولاً ثم CREATE OR REPLACE function intPart(floatNum in number) return number is floatNum1 number:=floatNum; begin if (floatNum1< -0.0000001) then return ceil(floatNum1-0.0000001); end if; return floor(floatNum1+0.0000001); end; / قم بتنفيذ الfuntionهذا ثانياً CREATE OR REPLACE function hd_fun(dateh date) return date is datea date; d number(2):=to_char(dateh,'dd'); m number(2) :=to_char(dateh,'mm'); y number(4) :=to_char(dateh,'yyyy'); jd number; l number; j number; n number; begin /*if ((y>1582) or ((y=1582)and(m>10))or((y=1582)and(m=10)and(d>14))) then jd:=intPart((1461*(y+4800+intPart((m-14)/12)))/4)+intPart((367*(m-2-12*(intPart((m-14)/12))))/12)- intPart( (3* (intPart( (y+4900+ intPart( (m-14)/12) )/100) ) ) /4)+d-32075; else*/ jd := 367*y-intPart((7*(y+5001+intPart((m-9)/7)))/4)+intPart((275*m)/9)+d+1729765; l:=jd-1948440+10632; n:=intPart((l-1)/10631); l:=l-10631*n+354; j:=(intPart((10985-l)/5316))*(intPart((50*l)/17719))+(intPart(l/5670))*(intPart((43*l)/15238)); l:=l-(intPart((30-j)/15))*(intPart((17719*j)/50))-(intPart(j/16))*(intPart((15238*j)/43))+29; m:=intPart((24*l)/709); d:=l-intPart((709*m)/24); y:=30*n+j-30; if length(d) <2 AND length(M) <2 THEN datea:=to_date(0||d||0||m||y,'ddmmyyyy'); elsif length(d) <2 then datea:=to_date(0||d||m||y,'ddmmyyyy'); elsif length(M) <2 THEN datea:=to_date(d||0||m||y,'ddmmyyyy'); else datea:=to_date(d||m||y,'ddmmyyyy'); end if; --end if; return datea; end; / الان يمكن استخدامه مع اي جملة select مثال select hd_fun(sysdate) from dual; مثال اخرى select hiredate,hd_fun(hiredate) from emp; الي اريد اعمله الحين هو اني اقوم انا بأدخال التاريخ ميلادي وهو يحوله الي هجريولكم مني جزيل الشكر تقديم بلاغ
بتاريخ: 22 نوفمبر 200619 سنة كاتب الموضوع comment_83797 اعتقد هي اني استدعيها في برنامج ناثي بس ما اعرف الطريقة بصراحة لاني مبتدأ في pl/sql تقديم بلاغ
بتاريخ: 24 نوفمبر 200619 سنة comment_84314 SQL> select hd_fun(sysdate), sysdate from dual; HD_FUN(SY SYSDATE --------- --------- 04-NOV-27 24-NOV-06 لو تقدر تحول كمان الشهور الميلادية الى الهجرية ؟!!وجزيل الشكر على الكود تقديم بلاغ
بتاريخ: 25 نوفمبر 200619 سنة كاتب الموضوع comment_84347 اخ MoHaNnEdمش هذا الي اريد اقوم فيه SQL> select hd_fun(sysdate), sysdate from dual; HD_FUN(SY SYSDATE --------- --------- 04-NOV-27 24-NOV-06 انا الي اريد اقول فيه هو اني انا اقوم بأدخل اي تاريخ وهو يقوم بتحويله عن طريق هذا الكودولو هذا وجبنا تقديم بلاغ
بتاريخ: 25 نوفمبر 200619 سنة comment_84350 select hd_fun('25/11/2006')HEJRA, sysdate from dual; HEJRA SYSDATE -------- -------- 05/11/27 25/11/06 التاريخ الناتج من الدالة هو 05/11/27 مع انه من المفترض حسب تقويم ام القرى 04/11/27 اي يوجد هناك انحراف في التاريخ اخي الكريم هناك اكثر من مشاركة في المنتدى عن موضوع التحويل من التاريخ الميلادي الى الهجري وهناك شرح لاكثر من طريقة للتحويل..استخدم خاصية البحث في المنتدى... تقديم بلاغ
بتاريخ: 25 نوفمبر 200619 سنة كاتب الموضوع comment_84436 اخوي developer مش هذا قصدي اني اقوم بأدخال التاريخ في جملة selectانا اريد اني ادخل التاريخ عن طريق جملة المتغيرات التعويضية substitution variables تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.