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

بتاريخ:

إخواني الأعزاء :
طلب من حساب مدة نهاية الخدمة لموظف بحيث تكون على الشكل التالي

كام سنة وكام شهر وكام يوم

قمت بعمل الكود التالي وطبعا السنة مظبوطة ولكن الشهر واليوم مش مضبوطين
والكود كالتالي:
select
ename,
trunc(months_between(sysdate,hiredate)/12) year,
round((months_between(sysdate,hiredate)-trunc(months_between(sysdate,hiredate)))*12) months,
mod((round(sysdate-hiredate)),30) days
from emp;

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

أشكركم جميعا ,

DateBetween.txt

بتاريخ:

select ename , round(months_between(sysdate,hiredate)/12) year,
round((months_between(sysdate,hiredate)/12)*30) monthes,
round((months_between(sysdate,hiredate)/12)*265) days
from emp1
/

بتاريخ:

select ename,
trunc(months_between(sysdate,hiredate)/12) year,
trunc(mod(trunc(months_between(sysdate,hiredate)/12))) month,
from emp;
بس ما معها ايام لانه انا مش في البيت وما عندي س كيو ال هلا بس انشا الله بحاول ابعتلكياها ما بدي اكتبلك شي غلط بس هدا الكود 100%

تم تعديل بواسطة moh1412

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

مشكور أخي الغالي
الحمد الله توصلت لحل لها والحل قمت بتطبيقه على البرنامج الذي أقوم بعمل لشئون الموظفين
والكود تم تعديله عليه وكتابته من داخل الفور على وكان كالتالي

declare
sys_day NUMBER;
sys_month NUMBER;
sys_year NUMBER;
st_day NUMBER;
st_month NUMBER;
st_year NUMBER;
begin
SYS_DAY := TO_CHAR(:SERV_FINAL_DATE, 'DD');
SYS_MONTH := TO_CHAR(:SERV_FINAL_DATE, 'MM');
SYS_YEAR := TO_CHAR(:SERV_FINAL_DATE, 'YYYY');
ST_DAY := TO_CHAR(:HIREDATE, 'DD');
ST_MONTH := TO_CHAR(:HIREDATE, 'MM');
ST_YEAR := TO_CHAR(:HIREDATE, 'YYYY');
IF TO_NUMBER(SYS_DAY) < TO_NUMBER(ST_DAY)
THEN
SYS_DAY := TO_NUMBER(SYS_DAY) + 30;
SYS_MONTH := TO_NUMBER(SYS_MONTH) - 1;
END IF;
IF TO_NUMBER(SYS_MONTH) < TO_NUMBER(ST_MONTH)
THEN
SYS_MONTH := TO_NUMBER(SYS_MONTH) + 12;
SYS_YEAR := TO_NUMBER(SYS_YEAR)- 1;
END IF;
:SERV_PER_DAY := TO_NUMBER(SYS_DAY) - TO_NUMBER(ST_DAY);
:SERV_PER_MONTH := TO_NUMBER(SYS_MONTH) - TO_NUMBER(ST_MONTH);
:SERV_PER_YAER := TO_NUMBER(SYS_YEAR) - TO_NUMBER(ST_YEAR);
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
end;
هذا الكود يمكن ينتفع به أي أخ
وتحياتي للجميع الأعضاء في المنتدى الغالي علينا
نفس الكود مرفق في ملف نصي

datet.txt

بتاريخ:

مشكورا على مشاركتك الطيبة

بتاريخ:

بسم الله الرحمن الرحيم

اخى الكريم انا عندى نفس الشغلة وهذا الكود شغال ميه المية

declare
year1 number ;
y  number;
d number;
m number;	
begin year1:=(:END_SERVICE_DATE-:MF_START_DATE);
d:=year1 / 365;
:year:=trunc(d);
d:=year1  mod 365;
m:=d / 30;
:month:=trunc(m);
:day:=d mod 30;
end;
end if;
end;

جربه واعطينى ردك

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

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

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

استخدم extract functin

select extract(day from hiredate) from emp;
select extract(month from hiredate) from emp;
select extract(year from hiredate) from emp; :lol:

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

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

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

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

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

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.