بتاريخ: 18 أغسطس 200817 سنة comment_136323 الاخوة الاعضاءكيف يمكنني التعامل مع الوقت ابتداء من الداتابيز والفورم وانتهاء بالتقاريربصوره اوضح لديا برنامج واريد ان اتعامل مع الوقت بحيث استطيع ان اظهر الفرق بين وقتين مختلفينمثلا الوقت الاول هو : 10:09:32الوقت الثاني هو : 7:59:33في هذه الحالة هل اقوم بتعريف الوقت في الداتابيز على انه Dateوكيف استطيع التعامل معه في الفورم تقديم بلاغ
بتاريخ: 19 أغسطس 200817 سنة comment_136490 ماجدولين لم يفهم المطلوب بشكل واضح ولكن للمعلومية في حال اردت حساب الوقت يكون كما ذكرت عمل حقل من نوع date في الداتا بيز ويتم تغييره الى time ويتم اعطاء format له hh:mm:ss ومن ثم يتم اجراء عملية الطرح من الحقلين ووضع الناتج غي حقل من نوع time واتمنى افادتك ولو بالشيء اليسير تقديم بلاغ
بتاريخ: 19 أغسطس 200817 سنة comment_136505 تعديل بسيط على كود كان قد ارفقه الاخ عبد اللطيف SQL> CREATE OR REPLACE FUNCTION TIME_difference( p_start_date IN DATE,p_end_date IN DATE ) 2 RETURN VARCHAR2 IS 3 ln_difference NUMBER := p_end_date - p_start_date; 4 ln_hours PLS_INTEGER := mod( 24 * ln_difference, 24); 5 ln_mins PLS_INTEGER := mod( 1440 * ln_difference, 60); 6 ln_secs PLS_INTEGER := mod( 86400 * ln_difference, 60); 7 BEGIN 8 RETURN( ' Hours : ' || ln_hours || ' Mins : ' || ln_mins || ' Secs : ' || ln_secs); 9 END; 10 / Function created. SQL> select TIME_difference(to_date('7:59:33','hh:mi:ss'),to_date('10:09:32','hh:mi:ss')) 2 FROM DUAL; TIME_DIFFERENCE(TO_DATE('7:59:33','HH:MI:SS'),TO_DATE('10:09:32','HH:MI:SS')) -------------------------------------------------------------------------------- Hours : 2 Mins : 10 Secs : 59 تقديم بلاغ
بتاريخ: 19 أغسطس 200817 سنة comment_136518 عرف حقل من نوع Date وفي النموذج أدرج حقل وأربطه به ... ومن ثم غير خاصية FormatMask الي القيمة HH24:MI:SS .أما بخصوص الطرح يجب عليك النظر في شيء مهم وهو أن اليوم يبدأ من الساعة 00:00:00 وينتهي 11:59:59 ... لكن المشكلة أن اليوم بيختلف ... يعني مثلاً لو كان اليوم الأول هو 24/9/1981 والثاني 25/2/1999 فالفارق هيكون كبير جداً ... يتعني لازم تحط في إعتبارك هذه المشكلة .عموماً عملية الطرح بتتم عادي جداً كما يلي : (Fld2 - Fld1) As SubDate بالتوفيق تقديم بلاغ
بتاريخ: 20 أغسطس 200817 سنة كاتب الموضوع comment_136550 اشكركم جميعا على هذه الحلوللكني الان اصبحت تائهة اكثرانا ارى ان الحلول متناقضة ايهما ساستعين بهاالاخ جود اعطى فكره نظرية عن الموضوع الاخ -=|mOOdY|=- جاب خلفية ممتازه عن الموضوع واعجبتني فكرته وساحاول تنفيذهاالاخ malam_eldin مش كافي اني ازعجتك في الريبورت وتبغاني ازعجك في الفورم ان شاء الله اخلص من الريبورت واتفرغ معك للفورم ههههالمشرف MMA جعل الفكره بسيطة - ولكنها غامضة في نفس الوقت لا اعرف ماذا يقصدعلى العموم يفترض ان نجرب الفكره على مثال في الفورم ونقوم بتحميلها الى الموقع وسيكون الشرح اكثر بلاغة ووضوحسؤالي بشكل نظري هو --->نفترض ان تاريخ ميلادك هو 10/11/1985 الساعة 4:53:20ونريد ان نوجد كم عمرك بالضبط بالساعة الى تاريخ 20/08/2008 الساعة 08:20:00الاخ malam_eldin اعتقد ان السؤال اصبح واااااضح ؟اشكركم جميعا تقديم بلاغ
بتاريخ: 20 أغسطس 200817 سنة comment_136556 أنظر الي الكود التالي : CREATE TABLE EMP ( EMP_NO NUMBER(10), EMP_NAME VARCHAR2(20), EMP_BDATE DATE, CONSTRAINT PK_EMP PRIMARY KEY(EMP_NO) ) / INSERT INTO EMP VALUES(1,'Ahmed',TO_DATE('10/11/1985 4:53:20','DD/MM/YYYY HH24:MI:SS')); SELECT ((SYSDATE - EMP_BDATE) * 24) AS AGE FROM EMP; أما بخصوص الغموض التي تحدث عنه فأنا لم أقصد أي غموض علي الإطلاق !!!حضرتك قمت بإدراج أبسط مثال وهو إيجاد الفرق بين تاريخين بعيدين عن بعض بالساعة ... لكن الي أنا أقصدة هو الساعات اليومية مثل الحضور والإنصراف !!!مش معقولة أن الشركة يكون بداية يومها الساع 00:00:00 ص ... لكن بالطبع بداية اليوم بيكون بداية أول وردية الساعة ( 8 ص ) وطبعاً نهايتها اليوم التالي الساعة ( 8 ص ) وحسب سياسة الشركة نفسها !!!إذاً في هذه الحالة لو حبيت تحسب الفرق بين بداية ونهاية عمل موظف محدد يجب الأخز في الأعتبار هذه الجزئية ... أن اليوم بيبدأ الساعة 8 من اليوم الحالي وبينتهي في نفس الموعد لليوم التالي ( وهذا هو ما كنت أقصدة ) .بالتوفيق تقديم بلاغ
بتاريخ: 20 أغسطس 200817 سنة comment_136607 بالنسبة لحلك صحيح جدا على اساس لو ماجدولين عايز تخزن الوقت في الداتا بيز اما غير كده فانا عندي فكرة جميلة وسوف اقوم بتحميلها لكم ان شاء اللهوشكرا على مجهودك MMA تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.