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

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

صورة
- - - - -

طرح وقت من وقت اخر


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

#1 وهاس

وهاس

    عضو

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

تاريخ المشاركة 13 August 2005 - 08:52 AM

هل توجد دالة تقوم طرح وقت من وقت اخر وتكون النتيجة الوقت الفارق
مثال
10:30:10 - 10:45:5 = 0:15:5
وفي حالة عدم وجود هذة الدالة فك كيف يمكن ان يحسب الوقت الفارق
:blink:

#2 motasem

motasem

    مشترك

  • الأعضــاء
  • 87 مشاركة
  • الاسم الأول:MHD. Moutasem
  • اسم العائلة:Shkeir
  • البـلـد: Country Flag
  • المنصب الحالي:Senior Oracle Developer

تاريخ المشاركة 13 August 2005 - 11:08 AM

يمكنك استخدام حقول من نوع timestamp لاجراء مثل هذه العملية أو يمكنك تحويل القيمة من شكل حرفي الى timestamp
select to_timestamp('10:45:51','hh24:mi:ss')-to_timestamp('10:30:10','hh24:mi:ss') from dual

#3 وهاس

وهاس

    عضو

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

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

شكرا لك يا اخ motasem علي الرد
لكن حاولت انفذ هذة الطريقة في شاشة ال SQL+ وحدث الخطأ التالي


ERROR at line 1:
ORA-00904: invalid column name

حيث كان يعترض علي الامر to_timestamp('10:45:51','hh24:mi:ss')

#4 motasem

motasem

    مشترك

  • الأعضــاء
  • 87 مشاركة
  • الاسم الأول:MHD. Moutasem
  • اسم العائلة:Shkeir
  • البـلـد: Country Flag
  • المنصب الحالي:Senior Oracle Developer

تاريخ المشاركة 13 August 2005 - 12:03 PM

ما هي نسخة الأوراكل عندك و أين تنفذ التعليمة؟

#5 وهاس

وهاس

    عضو

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

تاريخ المشاركة 13 August 2005 - 12:34 PM

نسخة الاوراكل 8.1.7.0.0
و اقوم بتنفيذ الامر في شاشة ال SQL PLUS

#6 أسامة موسى

أسامة موسى

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

  • المجموعة الماسية
  • 2,381 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 13 August 2005 - 02:21 PM

الاخ الكريم
النسخة من ال sql لا تعرف هذا التعريف
وانما يتم تطبيقها في اوراكل 9i
يعني غير متعارف على to_time_stamp في sql 8i
واليك هذا الرابط لعله يفيد
http://www.psoug.org.../timestamp.html
۩ اللهـــــــــــــــــــــــم صلي على سيدنا محمد وعلـى آله وصحبه أجمـعين ۩
۩ سبحـــــــــــــــــان الله وبحمده ....... سبحــــــــــــــــــــــــان الله العظيم ۩



يمكنك زيارتي على صفحتي الخاصة بالفيس بوك على الرابط AskOsama

يمكنك زيارتي على مدونتي الجديدة على الرابط http://askossama.blogspot.com

#7 وهاس

وهاس

    عضو

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

تاريخ المشاركة 13 August 2005 - 02:47 PM

شكرا لكم على تعاونكم
لقد قمت بكتابة دالة تقوم بعمل الطرح بين وقتين
واليكم هذة الدالة و انشاء اللة ان تكون نافعة للجميع
فقط قم بوظع الكود في الفورم في program unit
FUNCTION SUB_TIME(T1 VARCHAR2, T2 VARCHAR2) RETURN VARCHAR2  IS
HH1 NUMBER(4):=0;
MI1 NUMBER(4):=0;
SS1 NUMBER(4):=0;
HH2 NUMBER(4):=0;
MI2 NUMBER(4):=0;
SS2 NUMBER(4):=0;
NEW_HH NUMBER(4):=0;
NEW_MI NUMBER(4):=0;
NEW_SS NUMBER(4):=0;
NEW_TIME VARCHAR(12):=0;

BEGIN HH1:=TO_NUMBER(SUBSTRB(T1,1,2));
MI1:=TO_NUMBER(SUBSTRB(T1,4,2));
SS1:=TO_NUMBER(SUBSTRB(T1,7,2));


HH2:=TO_NUMBER(SUBSTRB(T2,1,2));
MI2:=TO_NUMBER(SUBSTRB(T2,4,2));
SS2:=TO_NUMBER(SUBSTRB(T2,7,2));

NEW_HH:=HH1-HH2;
NEW_MI:=MI1-MI2;
NEW_SS:=SS1-SS2;

IF NEW_HH < 0 THEN
NEW_HH:=NEW_HH * -1;
END IF;
IF NEW_MI < 0 THEN
NEW_MI:=NEW_MI * -1;
END IF;
IF NEW_SS < 0 THEN
NEW_SS:=NEW_SS * -1;
END IF;

NEW_TIME:=NEW_HH || ':' || NEW_MI || ':' || NEW_SS;
RETURN NEW_TIME;
END;


ولكم الشكر :blink:

#8 connector

connector

    مشترك

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

تاريخ المشاركة 13 August 2005 - 03:54 PM


select

lpad(trunc

(

to_date('10:45:05','HH:MI:SS')-

to_date('10:40:01','HH:MI:SS')

)*24,2,'0')||':'||

lpad(trunc((

(

(

to_date('10:45:05','HH:MI:SS')-

to_date('10:40:01','HH:MI:SS')

)*24

)

-

(

trunc(

to_date('10:45:05','HH:MI:SS')-

to_date('10:40:01','HH:MI:SS')

)*24

)

	 )*60),2,'0')||':'||

lpad(trunc((

((

to_date('10:45:05','HH:MI:SS')-

to_date('10:40:01','HH:MI:SS')

)*24*60)-

trunc((

to_date('10:45:05','HH:MI:SS')-

to_date('10:40:01','HH:MI:SS')

)*24*60)

	 )*60),2,'0')

from dual



#9 sailor

sailor

    عضو

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

تاريخ المشاركة 06 February 2012 - 01:14 PM

شكراً لك ياأستاذ معتصم
لقد جربت الإسكربت ونجح
جزاك الله خيراً

#10 a_disi

a_disi

    مشترك

  • الأعضــاء
  • 100 مشاركة
  • الاسم الأول:Ahmad
  • اسم العائلة:Al Disi
  • البـلـد: Country Flag
  • الاهتمامات:صيد السمك
    الرحلات البحرية
    التخييم
  • المنصب الحالي:Oracle Applications Specialist and System Analyst

تاريخ المشاركة 12 February 2012 - 09:33 AM

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

طريقة جيدة، و بارك الله فيكم

و يوجد طريقة أخرى أيضا كالتالي:



SELECT to_number( to_char(to_date('1','J') + (TO_DATE('10:45:15','HH24:MI:SS') - TO_DATE('10:30:05','HH24:MI:SS')), 'J') - 1)  days,
to_char(to_date('00:00:00','HH24:MI:SS') + (TO_DATE('10:45:15','HH24:MI:SS') - TO_DATE('10:30:05','HH24:MI:SS')), 'HH24:MI:SS') time
FROM DUAL

عن أبي ذر جندب بن جنادة، و أبي عبد الرحمن معاذ بِن جبل رضي الله عنهما، عن رسول الله صلى الله عليه وسلم قال:
( اتق الله حيثما كنت، وأتبع السيئة الحسنة تمحها ، وخالق الناس بخلق حسن ).
رواه الترمذي وقال: حديث حسن.