سلطان اوراكل بتاريخ: 22 نوفمبر 2006 تقديم بلاغ مشاركة بتاريخ: 22 نوفمبر 2006 السلام عليكم اخواني انا عندي هذي الكود الذي يقوم بتحويل التاريخ الميلادي الي الهجري قم بتنفيذ هذا ال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 نوفمبر 2006 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 22 نوفمبر 2006 اعتقد هي اني استدعيها في برنامج ناثي بس ما اعرف الطريقة بصراحة لاني مبتدأ في pl/sql اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
سلطان اوراكل بتاريخ: 23 نوفمبر 2006 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 23 نوفمبر 2006 ليش مافي ردود اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
MoHaNnEd بتاريخ: 24 نوفمبر 2006 تقديم بلاغ مشاركة بتاريخ: 24 نوفمبر 2006 SQL> select hd_fun(sysdate), sysdate from dual; HD_FUN(SY SYSDATE --------- --------- 04-NOV-27 24-NOV-06 لو تقدر تحول كمان الشهور الميلادية الى الهجرية ؟!!وجزيل الشكر على الكود اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
سلطان اوراكل بتاريخ: 25 نوفمبر 2006 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 25 نوفمبر 2006 اخ MoHaNnEdمش هذا الي اريد اقوم فيه SQL> select hd_fun(sysdate), sysdate from dual; HD_FUN(SY SYSDATE --------- --------- 04-NOV-27 24-NOV-06 انا الي اريد اقول فيه هو اني انا اقوم بأدخل اي تاريخ وهو يقوم بتحويله عن طريق هذا الكودولو هذا وجبنا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
developer بتاريخ: 25 نوفمبر 2006 تقديم بلاغ مشاركة بتاريخ: 25 نوفمبر 2006 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 نوفمبر 2006 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 25 نوفمبر 2006 اخوي developer مش هذا قصدي اني اقوم بأدخال التاريخ في جملة selectانا اريد اني ادخل التاريخ عن طريق جملة المتغيرات التعويضية substitution variables اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.