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

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

صورة
- - - - -

مشكلة في مقارنة التواريخ وحلها


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

#1 هانى سند

هانى سند

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

  • المجموعة الماسية
  • 743 مشاركة

تاريخ المشاركة 24 March 2004 - 01:18 PM

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

#2 عبدالله ندا

عبدالله ندا

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

  • المجموعة الماسية
  • 1,017 مشاركة
  • الاسم الأول:عبدالله
  • اسم العائلة:ندا
  • البـلـد: Country Flag
  • المنصب الحالي:Technical Applications Manager

تاريخ المشاركة 24 March 2004 - 01:52 PM

مشكور hanon_OCP
علي مشاركتك القيمة
وعندي اضافة ايضا علي موضوع التاريخ
غالبا في الايصالات او المستندات ذا الصبغة الماليه ما نقوم بتخزين ال SYSDATE لمعرفة تاريخ الاصدر
و عند السيرش عن الايصالات المصدر في تاريخ معين تحدث مشكله وهي
ان التاريخ يخزن بصيغة كامله بما في ذلك الدقائق و الثواني
اما عند البحث ندخله علي شكل يوم شهر سنه وفي هذه الحالة يعتبرنا في الساعه هي الساعة 1 اي منتصف اليل
و بذلك يفشل البحث
الحل ان تقوم بعمل TRUNC للعمود المحتوي علي تاريخ
SELECT * FROM EMP WHERE TRUNK(HIRDATE) ='24/10/1990' ;

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

في زمننا هذا .........................
ليس هناك قلب ناصع البياض ...
ولا قلب قاتم السواد ...
ولكن دائما
BLACK&WHITE

 

مع تحياتي
عبدالله ندا

http://anada.4shared.com

abdallahnada@hotmail.com 


#3 khaled

khaled

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

  • المجموعة الماسية
  • 251 مشاركة

تاريخ المشاركة 24 March 2004 - 01:56 PM

مشاركة رائعة ومعلومة مهمة ومفيده
الى الامام وميزد من الافكار والمشاركات
خالد مبارك العوبثاني
اليمن-حضرموت
Email :Aboanter84@hotmail.com

#4 هانى سند

هانى سند

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

  • المجموعة الماسية
  • 743 مشاركة

تاريخ المشاركة 24 March 2004 - 01:59 PM

مشكور عبدالله علي مشاركتك السريعة والفعالة
ارجو من بقية الاعضاء ان يحذوا حذوك
وكنت عايز اضيف مثال للمشكلة دي
ده كويري يجيب نتايج غلط
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);


#5 sammerjo

sammerjo

    عضو

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

تاريخ المشاركة 25 March 2004 - 11:51 AM

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

هذا المثال بيقارن بين تاريخين بغض النظر عن الوقت المسجل ضمن التاريخ
select anyColums from anyTable where truncate(date1,'day') =
truncate(date2,'day')

SammerJo - Jordan University

#6 هانى سند

هانى سند

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

  • المجموعة الماسية
  • 743 مشاركة

تاريخ المشاركة 25 March 2004 - 01:57 PM

اخي العزيز sammerjo السلام عليكم
اولا الوظيفة اسمها trunc وليس truncate
ثانيا انا نفذت نفس الكويري اللي بعته بطريقتك ولكن للاسف اعطاني نتيجة مختلفة و لكن يمكن تعديله
في حالة هذا الكويري بالذات حتي يعطي النتيجة الصح
ايضا يجب ان تعرف انني هنا لا اطرح طريقة لشيء انا فقط اشارككم مشكلة حدثت لي و كيف حلتها
بناء علي الاقتراح الذي تقدمت به و الذي ستجد ه في قسم الاقتراحات
و هذا هو الكويري اللي بعته بس بطريقتك
select  empno,trunc(hiredate,'day') d1   from emp where trunc  (hiredate)  >(select  trunc(hiredate,'day') from emp where empno  =7788)

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

#7 sammerjo

sammerjo

    عضو

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

تاريخ المشاركة 28 March 2004 - 12:43 PM

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

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



SammerJo

ملفات مرفقة

  • ملف مرفق  ______   6.7كيلو   103 عدد مرات التحميل


#8 ابوالعز

ابوالعز

    عضو

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

تاريخ المشاركة 28 March 2004 - 02:01 PM

شكرا لك
nO oNe To tRusT
No WerE tO hiDe

#9 هانى سند

هانى سند

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

  • المجموعة الماسية
  • 743 مشاركة

تاريخ المشاركة 28 March 2004 - 09:03 PM

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

#10 arab20002000

arab20002000

    عضو نشط

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

تاريخ المشاركة 29 March 2004 - 10:45 AM

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

#11 عبداللطيف

عبداللطيف

    مــشــرف عــام

  • الإشراف العام
  • 1,267 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 14 April 2004 - 08:24 AM

شكراً والى الامام

#12 gtnet

gtnet

    عضو

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

تاريخ المشاركة 12 November 2005 - 06:21 PM

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