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

بتاريخ:

السلام عليكم
دي اول مشكلة ابعتها تطبيقا للفكرة اللي قلت لكوا عليها
هي المشكلة اللي حصلت معايا و شفتها في حاجات كتير
هي عند المقارنة بين تاريخين as charcter
عشان محتاجين نقارن بالشهر بس
في فورمات mm-yyyy
المشكلة ان الاوراكل عند المقارنة as charcter
ممكن يعتبر حاجات اكبر من حاجات تانية
مع انهم كديت موش كدة يعني
مثلا ممكن 10-2003 تبقي اصغر من 07-2003ككاركتر
مع انه كديت العكس طبعا
طيب دي المشكلة حلها ايه بقي
اننا نحول التاريخ لكاركتر و بعد كدة لديت عشان يقارن صح يعني
نكتب كدة

and  to_date(to_char(date1,'mm-yyyy'),'mm-yyyy')<to_date(to_char('07-2003','mm-yyyy'),'mm-yyyy');


كدة يقارنهم ك date مش charcter
و النتايج تطلع صح
بالتوفيق و منتظر مشاركاتكم

بتاريخ:

مشكور hanon_OCP
علي مشاركتك القيمة
وعندي اضافة ايضا علي موضوع التاريخ
غالبا في الايصالات او المستندات ذا الصبغة الماليه ما نقوم بتخزين ال SYSDATE لمعرفة تاريخ الاصدر
و عند السيرش عن الايصالات المصدر في تاريخ معين تحدث مشكله وهي
ان التاريخ يخزن بصيغة كامله بما في ذلك الدقائق و الثواني
اما عند البحث ندخله علي شكل يوم شهر سنه وفي هذه الحالة يعتبرنا في الساعه هي الساعة 1 اي منتصف اليل
و بذلك يفشل البحث
الحل ان تقوم بعمل TRUNC للعمود المحتوي علي تاريخ

SELECT * FROM EMP WHERE TRUNK(HIRDATE) ='24/10/1990' ;


وبالتالي
سيكون الساعة و الدقيقه و الثانيه هي 1 وبذلك نستيطع عمل بحث منطقي
مع تمنياتي بالتوفيق

بتاريخ:

مشاركة رائعة ومعلومة مهمة ومفيده
الى الامام وميزد من الافكار والمشاركات

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

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

select  hiredate  from emp where to_char(hiredate,'mmyyyy') >
(select   to_char(hiredate,'mmyyyy') from emp where empno =7788);


و ده نفس الكويري بالنتايج الصح

select  hiredate  from emp where to_date(to_char(hiredate,'mmyyyy'),'mmyyyy')>
(select  to_date( to_char(hiredate,'mmyyyy'),'mmyyyy') from emp where empno =7788);

بتاريخ:

يا شباب .... ليش متعبين حالكو ... بتقدروا تقارنو التواريخ كما هي بدون تحويل الى احرف من خلال استخدام الدالة(ة truncate(date,format والي بيتمكنكو من قطع الاجزاء التي ما بدكوا تقرنوها ....

هذا المثال بيقارن بين تاريخين بغض النظر عن الوقت المسجل ضمن التاريخ

select anyColums from anyTable where truncate(date1,'day') =
truncate(date2,'day')


SammerJo - Jordan University

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

اخي العزيز sammerjo السلام عليكم
اولا الوظيفة اسمها trunc وليس truncate
ثانيا انا نفذت نفس الكويري اللي بعته بطريقتك ولكن للاسف اعطاني نتيجة مختلفة و لكن يمكن تعديله
في حالة هذا الكويري بالذات حتي يعطي النتيجة الصح
ايضا يجب ان تعرف انني هنا لا اطرح طريقة لشيء انا فقط اشارككم مشكلة حدثت لي و كيف حلتها
بناء علي الاقتراح الذي تقدمت به و الذي ستجد ه في قسم الاقتراحات
و هذا هو الكويري اللي بعته بس بطريقتك

select  empno,trunc(hiredate,'day') d1   from emp where trunc  (hiredate)  >(select  trunc(hiredate,'day') from emp where empno  =7788)


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

بتاريخ:

سلام شباب ... ومشكور اخ hanon_OCP على التصحيح. وارجو ان تعذرني وشباب لأني اتصفح الموقع بين المحاضرات داخل المختبر لاني ما عندي إشتراك في البيت. عموما علشان ما يسسير اي خربطة للقارئ قمت بتحضير مثال بسسيط ومتكامل (على صفحة هـ.ت.م.ل مرفقة) ليوضح كل من trunc و round لمقارنة التواريخ.

كنت اتمنى ان تكون مشاركتي مرتبة اكثر ولكن الوقت ضيق جدا بسسب المحاضرات والدراسة و مشروع التخرج الذي يأخذ معظم وقتي.



SammerJo

______

بتاريخ:

شكرا لك

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

ربنا يوفقك يا اخ sammer

بتاريخ:

مشكور و جزاك الله الف خير

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

مشكور وبارك الله فيك

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

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

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

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

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

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.