الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

تحويل التاريخ من ميلادي الي هجري

Featured Replies

بتاريخ:

السلام عليكم

اخواني انا عندي هذي الكود الذي يقوم بتحويل التاريخ الميلادي الي الهجري

قم بتنفيذ هذا ال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;


الي اريد اعمله الحين هو اني اقوم انا بأدخال التاريخ ميلادي وهو يحوله الي هجري

ولكم مني جزيل الشكر

بتاريخ:
  • كاتب الموضوع

اعتقد هي اني استدعيها في برنامج ناثي
بس ما اعرف الطريقة بصراحة لاني مبتدأ في pl/sql

بتاريخ:
  • كاتب الموضوع

 

:) ليش مافي ردود :(

 

بتاريخ:

SQL> select hd_fun(sysdate), sysdate from dual;

HD_FUN(SY SYSDATE
--------- ---------
04-NOV-27 24-NOV-06


لو تقدر تحول كمان الشهور الميلادية الى الهجرية ؟!!
وجزيل الشكر على الكود

بتاريخ:
  • كاتب الموضوع

اخ MoHaNnEd

مش هذا الي اريد اقوم فيه


SQL> select hd_fun(sysdate), sysdate from dual;

HD_FUN(SY SYSDATE
--------- ---------
04-NOV-27 24-NOV-06





انا الي اريد اقول فيه هو اني انا اقوم بأدخل اي تاريخ وهو يقوم بتحويله عن طريق هذا الكود

ولو هذا وجبنا
بتاريخ:

select hd_fun('25/11/2006')HEJRA, sysdate from dual;

HEJRA    SYSDATE
-------- --------
05/11/27 25/11/06



التاريخ الناتج من الدالة هو

05/11/27



مع انه من المفترض حسب تقويم ام القرى

04/11/27



اي يوجد هناك انحراف في التاريخ

اخي الكريم هناك اكثر من مشاركة في المنتدى عن موضوع التحويل من التاريخ الميلادي الى الهجري وهناك شرح لاكثر من طريقة للتحويل..

استخدم خاصية البحث في المنتدى...

بتاريخ:
  • كاتب الموضوع

اخوي developer

مش هذا قصدي اني اقوم بأدخال التاريخ في جملة select
انا اريد اني ادخل التاريخ عن طريق جملة المتغيرات التعويضية substitution variables

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.