إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

التاريخ الهجري


4 رد (ردود) على هذا الموضوع

#1 reda_hamed

reda_hamed

    عضو

  • الأعضــاء
  • 7 مشاركة

تاريخ المشاركة 06 April 2005 - 03:53 PM

السلام عليكم ورحمة الله وبركاتة

ارجو من سيادتكم كيفية التعامل مع التاريخ الهجري حيث لدي مشروع يعتمد علي التاريخ الهجري وقمت بالأتي
عملت تغير
set nls_calendar='arabic hijrah'
الحقيقة اشتغلت كويس بس عملت مشكلة مع الشهور الزوجية مثل 2و4و6 0000 بمعني لو باسجل التاريخ
30-02-1420 او اي سنة اخري يقلب التاريخ الي 1-03 وهكذا
ارجو الافادة
ولكم جزيل الشكر
اريد حل بسيط لان لدي حلول اخري طويلة

#2 Amgad

Amgad

    مشرف عام ومشرف قسم تحليل النظم

  • الفريق الإداري
  • 4,558 مشاركة
  • الاسم الأول:امجد
  • اسم العائلة:حلمي
  • البـلـد: Country Flag
  • المنصب الحالي:Business Systems Analyst at al Fanar Co. Riyadh KSA

تاريخ المشاركة 07 April 2005 - 02:28 AM

السلام عليكم ..

لا يوجد يوم 30 صفر 1420 هذا الشهر 29 يوم فقط

والله اعلم

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

ملفات مرفقة

  • ملف مرفق  HCalander.exe   352كيلو   59 عدد مرات التحميل

لا إله إلا الله الحليم الكريم
لا اله إلا الله العلى العظيم
لا اله إلا الله رب السماوات السبع و رب العرش العظيم
‏اللهم ارزقني قبل الموت توبة وعند الموت شهادة وبعد الموت جنة
اللهم ارزقني حسن الخاتمة
اللهم هون علينا سكرات الموت ... ونور علينا قبورنا
اللهم ارزقني الموت وأنا ساجد لك يا ارحم الراحمين
اللهم ثبتني عند سؤال الملكين
اللهم اجعل قبري روضة من رياض الجنة ولا تجعله حفرة من حفر النار
اللهم اني اعوذ بك من فتن الدنيا
اللهم ارحم ابائنا وامهاتنا واغفر لهما وتجاوز عن سيئاتهما وادخلهم فسيح جناتك ... والحقنا بهما يا رب العالمين
اللهم ارحم موتانا وموتى المسلمين واشفي مرضانا ومرضى المسلمين
اللهم اغفر للمسلمين والمسلمات والمؤمنين والمؤمنات الأحياء منهم والأموات
وبارك اللهم على سيدنا محمد صلى الله عليه وسلم
اللهم آمين ... اللهم آمين ... اللهم آمين


....


#3 reda_hamed

reda_hamed

    عضو

  • الأعضــاء
  • 7 مشاركة

تاريخ المشاركة 07 April 2005 - 10:01 AM

السلام عليكم ورحمة الله وبركاتة
شكرا لك يا اخي علي محاولتك الرد علي مشكلة التاريخ الهجري ولكن المشكلة تحتاج لحل في قاعدة البيانات كما ان المشكلة كما سبق ووضحت هي عدم امكانية تسجيل يوم 30 مع اي شهر زوجي مثل 2و4و6و8و10و12 كمثال
لو اردت تسجيل يوم 30-04-1426 تصبح 1-05-1426
لو اردت تسجيل 30-10-1426 تصبح 1-11-1426

#4 ahmed_tlawy

ahmed_tlawy

    عضو

  • الأعضــاء
  • 21 مشاركة

تاريخ المشاركة 07 April 2005 - 11:37 AM

السلام عليكم ورحمة الله وبركاته،،
واجهت نفس المشكلة و تغلبت عليها كالتالى

1- عمل جدول يحتوى على التاريخ الهجري و التاريخ الميلادى المقابل لة
2- التعامل مع التاريخ الهجرى على انة varchar2
3- الاعتماد على قيمة التاريخ الميلادى المقابلة للتاريخ الهجرى المستخدم
هذا يعنى ان التاريخ الميلادى هو الاساس لاجراء اي حسابات و التاريخ الهجرى للعرض فقط
4- عمل form يقوم المستخدم بئدخال السنة المراد ادخالها فى جدول التقويم و بئستخدام امكانية التحويل بين التقويمين فى ()select to_char اقوم بملء الجدول بالقيم
اذا احتوت هذة القيم على اخطاء و هى فى الغالب تحتوى فلن تجد 29-2 او 30-2 لأي عام هجري يقوم المستخدم بتعديلها يدويا ووضع القيم الصحيحه
5- عمل function للتحويل من التاريخ الميلادى للهجرى و العكس بئستخدام القيم الموجودة بالجدول

فى البداية كنت متصور ان هذة الطريقة غير عملية الا انة ثبت لى انة لا يمكن الاعتماد الكلى على التحويل عن طريق nls او select to_char و افضل شىء ان تكون كل القيم قابلة للتعديل

لو حد وصل لطريقة اسهل :( يبلغنا .

#5 ash_khalaf

ash_khalaf

    عضو

  • الأعضــاء
  • 8 مشاركة

تاريخ المشاركة 26 April 2005 - 05:42 PM

جرب هذا البرنامج شغال مية مية
PROCEDURE GDATE_TO_HDATE (G_DATE IN DATE,H_DATE OUT VARCHAR2) IS
H_DAY NUMBER(2):=0;
HDAY VARCHAR2(2);
H_MONTH NUMBER(2):=1;
HMONTH VARCHAR2(2);
H_YEAR NUMBER(4):=1;
FGDATE DATE;
I_LOOP NUMBER;
HY NUMBER;
MONTH_NAME VARCHAR2(40);
GDATE DATE;
begin
FGDATE:=TO_DATE('14-JUL-0622 01:01','DD-MON-YYYY HH:MI');
GDATE:=TO_DATE(TO_CHAR(G_DATE,'DD-MON-YYYY')||'01:01','DD-MON-YYYY HH:MI');
I_LOOP:=GDATE-FGDATE;

LOOP
IF I_LOOP<355 THEN
EXIT;
END IF;
IF MOD(H_YEAR,30) IN (2,5,7,10,13,16,18,21,24,26,29) THEN
H_YEAR:=H_YEAR+1;
I_LOOP:=I_LOOP-355;
ELSE
I_LOOP:=I_LOOP-354;
H_YEAR:=H_YEAR+1;
END IF;
END LOOP;

FOR I IN 1..I_LOOP LOOP
H_DAY:=H_DAY+1;
IF H_MONTH IN (1,3,5,7,9,11) AND H_DAY>30 THEN
H_MONTH:=H_MONTH+1;
H_DAY:=1;
END IF;
IF H_MONTH IN(2,4,6,8,10)AND H_DAY>29 THEN
H_MONTH:=H_MONTH+1;
H_DAY:=1;
END IF;
IF MOD(H_YEAR,30) IN (2,5,7,10,13,16,18,21,24,26,29) THEN
IF H_MONTH=12 AND H_DAY>30 THEN
H_MONTH:=H_MONTH+1;
H_DAY:=1;
IF H_MONTH>12 THEN
H_YEAR:=H_YEAR+1;
H_MONTH:=1;
END IF;
END IF;
ELSE IF H_MONTH=12 AND H_DAY>29 THEN
H_MONTH:=H_MONTH+1;
H_DAY:=1;
IF H_MONTH>12 THEN
H_YEAR:=H_YEAR+1;
H_MONTH:=1;
END IF;
END IF;
END IF;
END LOOP;

SELECT DECODE(H_MONTH
,1,'محرم'
,2,'صفر'
,3,'ربيع الأول'
,4,'ربيع الثاني'
,5,'جمادى الأولى'
,6,'جمادى الثانية'
,7,'رجب'
,8,'شعبان'
,9,'رمضان'
,10,'شوال'
,11,'ذو القعدة'
,12,'ذو الحجة',NULL)INTO MONTH_NAME FROM DUAL;

IF H_DAY<10 THEN
HDAY:='0'||TO_CHAR(H_DAY);
ELSE
HDAY:=TO_CHAR(H_DAY);
END IF;
IF H_MONTH<10 THEN
HMONTH:='0'||TO_CHAR(H_MONTH);
ELSE
HMONTH:=TO_CHAR(H_MONTH);
END IF;
-- BY MONTH NAME
--:H_DATE:= (HDAY||'-'||MONTH_NAME||'-'||TO_CHAR(H_YEAR));
-- BY MONTH NUMBER
H_DATE:= (HDAY||'-'||HMONTH||'-'||TO_CHAR(H_YEAR));
END;