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

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

صورة
- - - - -

انقاص تاريخين من بعض


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

#1 Mo7B

Mo7B

    مشترك

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

تاريخ المشاركة 25 November 2004 - 11:59 AM

السلام عليكم لو سمحتوا ابغى اعرف كيف انقص تاريخين من بعضهم
يعني التاريخ الاول هو تاريخ الجهاز
والتاريخ الثاني يعطي من المستخدم
التاريخ الناتج يكون عل شكل تاريخ
ياليت يكون فيه مثال مرفق

#2 عبدالله أسعد

عبدالله أسعد

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,194 مشاركة

تاريخ المشاركة 25 November 2004 - 03:21 PM

السلام عليكم ورحمة الله وبركاته،،
اولا : العمليات التى تجرى على التاريخ هى :
بفرض ان التا ريخ الحالى هو 25-11-2004
---------------------------------------------------------------------------------------
تاريخ + رقم = تاريخ مثال : ( (25-11-2004)+ 10 = ( 5 -12-2004) )
---------------------------------------------------------------------------------------
تاريخ - رقم = تاريخ مثال : ( (25-11-2004) - 5 = (20 -11-2004) )
--------------------------------------------------------------------------------------
تاريخ - تاريخ = ايام (عدد الايام الفرق بين التاريخين لا حظ انه لو كان التاريخ الا ول صغير فان قيمنة الناتج ستكون بالسالب )
مثال : ( (25-11-2004)- (10-12-2005) = 15 )
----------------------------------------------------------------------------------
بالنسبة لعملية الطرح يمكنك استخدام
( Function ( MONTHS_BETWEEN (date1, date2
وهى تقوم بعملية الطرح بين تاريخين هما date1, date2 لاحظ انا التا ريخ الا كبر قيمة او الا حدث هو الا ول
و الثانى هو الا قدم فالناتج فى هذه الحالة موجب و لو العكس يكون الناتج بقيمة سا لبة
انت تريد استخدام تاريخ الجهاز SYSDATE تعامل مع تاريخ الجهاز على انه تاريخ مثال:

SELECT employee_id, hire_date,
MONTHS_BETWEEN (SYSDATE, hire_date)) from employees;

الناتج يكون رقم الموظف و تاريخ تعينه و ناتج طرح تاريخ تعينه من تاريخ الجهاز (فترة عمله منذ بداية تعينه)
فلو ان مثلا تاريخ الجهاز هو 25-11-2004 وتاريخ التعيين (hire_date) هو 10-10-2003 ناتج الطرح يكون عدد الايام الفق بين التاريخين و هو 412 يوم

ادعو الله ان اكون قد اجبت على سؤالك

تم التعديل بواسطة bedooracle, 25 November 2004 - 03:22 PM.

الدعاء نجى يونس وأهلك قوم نوح ورفع قدر سليمان وأظهر دين محمد عليه الصلاة و السلام فلا تتردد و قل يارب يارب يارب
Oracle DBA@Amig.com.eg

#3 developer9

developer9

    عضو

  • الأعضــاء
  • 18 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 27 November 2004 - 08:18 AM

مشكور اخي bedooracle

بالنسبة للأمثلة التي ضربتها للعمليات الحسابية والمنطقية للتأريخ يتضح إن التغيير يجري على الايام فقط

مثلاً عندما اطبع التاريخ الحالي + 10 فإنه يزيد من عدد الأيام

فإذا كنت اريد أن تكون الزيادة في الشهور والسنين

هل هناك دوال خاصة لذلك

ارجو التوضيح

وشكراً

تم التعديل بواسطة developer9, 27 November 2004 - 08:19 AM.


#4 developer9

developer9

    عضو

  • الأعضــاء
  • 18 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 27 November 2004 - 09:23 AM

شكراً اخي bedooracle على هذه الامثلة

اخي بالنسبة للامثلة التي ضربتها توضح العمليات الحسابية والمنطقية على التأريخ ولكن على الايام فقط

فإذا اردت ان تكون العمليات ( من جمع وطرح ) شهور او سنين

هل هناك دوال خاصه ام ماذا

وتقبل تحياتي ...

#5 عبدالله أسعد

عبدالله أسعد

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,194 مشاركة

تاريخ المشاركة 27 November 2004 - 08:35 PM

[ALIGN=left]Date function on oracle
هذه مجموعة من الـ function التى تتعا مل مع قواعد البيا نات فى اوراكل :
1- MONTHS_BETWEEN(date1, date2) :
و تستخدم لمعرفة عد د الاشهر بين تاريخين date1, date2 مع ملاحظة ان النا تج ممكن ان يكون موجب او سالب و ذلك يتوقف عليه قيمة التا ريخ الاول كما وضحت من قبل مثا ل :

MONTHS_BETWEEN (’01-SEP-95’,’11-JAN-94’)
= 19.6774194

SELECT employee_id, hire_date,
MONTHS_BETWEEN (SYSDATE, hire_date) from employees ;



2- ADD_MONTHS(date, n) :
تقوم هذه الـ Function باضافة عدد من الا شهر على تاريخ معين ( n) مع ملاحظة ان قيمة n لا بد ان تكون قيمة موجبة لا تستطيع ان تضع قيمة سالبة مثا ل:
ADD_MONTHS (’11-JAN-94’,6)
= ’11-JUL-94’

SELECT employee_id, hire_date ,
ADD_MONTHS (hire_date, 6) REVIEW,from employees
;


3- NEXT_DAY(date, 'char') :
تقوم هذه الـ Function بمعرفة تاريخ يوم معين بمعنى اوضح عندما تريد معرفة تاريخ مثلا .
اول بوم جمعة فى تاربخ معين
( مثلا عابز تعرف امتى اول يوم جمعة هيجى بعد تاريخ النهارده 27-11-2004 هيكون تاريخه يوم 5-12-2004 )
مثال :

NEXT_DAY (’27-NOV-04’,’FRIDAY’)
'5-DEC-2004'=

4- LAST_DAY(date) :
وهى تقوم بمعرفة اخر يوم فى شهر معبن date مثال :
LAST_DAY(’01-NOV-04’)
= ('30-NOV-04 ')</div>

معذرة لانى لم استطيع تنظيم الكتا بة فلا ادرى كيف انسق الحروف فمعذرة و مرفق مع المشاركة ملف الوورد الذى كتبته للرد على المو ضوع

ملفات مرفقة


تم التعديل بواسطة bedooracle, 27 November 2004 - 11:22 PM.

الدعاء نجى يونس وأهلك قوم نوح ورفع قدر سليمان وأظهر دين محمد عليه الصلاة و السلام فلا تتردد و قل يارب يارب يارب
Oracle DBA@Amig.com.eg

#6 developer9

developer9

    عضو

  • الأعضــاء
  • 18 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 28 November 2004 - 08:25 AM

مشكووووووووووور ما قصرت

#7 Mo7B

Mo7B

    مشترك

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

تاريخ المشاركة 01 December 2004 - 10:24 PM

جزاك الله خير على المعلومات هذى ولكن اخوي انا ابغى الناتج
ناتج طرح الجملة التالية يكون
11-OCT-2004
SELECT employee_id, hire_date,
MONTHS_BETWEEN (SYSDATE, hire_date) from employees ;



اذا كان الشي هذا ممكن

#8 عبدالله أسعد

عبدالله أسعد

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,194 مشاركة

تاريخ المشاركة 02 December 2004 - 03:26 AM

ممكن شو ية تو ضيح Mo7B ؟

تم التعديل بواسطة bedooracle, 02 December 2004 - 03:27 AM.

الدعاء نجى يونس وأهلك قوم نوح ورفع قدر سليمان وأظهر دين محمد عليه الصلاة و السلام فلا تتردد و قل يارب يارب يارب
Oracle DBA@Amig.com.eg

#9 Mo7B

Mo7B

    مشترك

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

تاريخ المشاركة 02 December 2004 - 04:59 PM

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

انقصناتاريخ الجهاز من تاريخ التعيين كان الناتج كما يلي
SELECT empno, hiredate,
MONTHS_BETWEEN (SYSDATE, hiredate) from emp; EMPNO HIREDATE MONTHS_BETWEEN(SYSDATE,HIREDATE)
----- --------- --------------------------------
7369 17-DEC-80 275.53888
7499 20-FEB-81 273.4421
7521 22-FEB-81 273.37759
7566 02-APR-81 272
7654 28-SEP-81 266.18404
7698 01-MAY-81 271.05501
7782 09-JUN-81 269.79694
7788 19-APR-87 199.47436
7839 17-NOV-81 264.53888
7844 08-SEP-81 266.8292
7876 23-MAY-87 198.34533
7900 03-DEC-81 263.99049
7902 03-DEC-81 263.99049
7934 23-JAN-82 262.34533

انا اريد الناتج يكون تاريج مو ارقام هل ممكن الشي هذا
اوضح بمثال ولا ياخذ انه صحيح
EMPNO HIREDATE  MONTHS_BETWEEN(SYSDATE,HIREDATE)
----- --------- --------------------------------
7369 17-DEC-80 11-oct-2004


هل ممكن الشي هذا