الانتقال إلى المحتوى
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

بتاريخ:

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

بتاريخ:

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

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

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


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

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

بتاريخ:

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

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

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

بتاريخ:

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

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

شكرا لكم على تعاونكم
لقد قمت بكتابة دالة تقوم بعمل الطرح بين وقتين
واليكم هذة الدالة و انشاء اللة ان تكون نافعة للجميع
فقط قم بوظع الكود في الفورم في 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:

بتاريخ:

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

  • بعد 6 سنة...
بتاريخ:

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

بتاريخ:

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

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

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


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

  • بعد 8 سنة...
بتاريخ:
في ١٣‏/٨‏/٢٠٠٥ at 12:08, motasem said:

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

كيف من الممكن أن احسب الفرق بين توقيتين في يومين مختلفين 

مثلا

وقت النهاية يوم ٤/٩/٢٠٢٠ الساعة ٠٢:٤٥ صباحاً

وقت البداية يوم ٣/٩/٢٠٢٠ الساعة ٢٣:٣٠ مساءً

  • بعد 2 شهور...
بتاريخ:

بارك الله فيكم جميعا والله عمل جميل ورائع

أما إذا كان إضافة عدد إلى تاريخ معين مثل عطلة الإجازة+ عدد أيام الإجازة

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

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

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

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

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

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.