• 0
nora sweet

استعلام بين تاريخين؟؟

سؤال

السلام عليكم

اخواني الكرام

كيف يمكنني ان اكتب جملة استعلام بين تاريخين

الصراحه انا جربت جمل كثيره كنت استخدمها مع داتا بيس من نوع اخر مثل الاكسس والsql سيرفر بس للاسف عند استخدام نفس جملة الاستعلام يرجع رساله غلط بان هذه الجملة لا تتناسب مع my sql

ارجو لمن لدية فكره عن طريقه عمل استعلام بين تاريخين ان يساعدنا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

9 إجابة على هذا السؤال .

  • 0

يمكنك استخدام الأمر التالى

select (fieldname)from (tablename) where ctod(fieldname)between #15/06/2008# and #10/07/2008#

حيث ان table name هو أسم الجدول المراد البحث فيه

و field name هو اسم الحقل المراد البحث فيه

ملحوظة : التواريخ السابقة مثال

أرجو ان تكون المعلومة وصلت :D

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا اخي الكريم

بالفعل انا استخدم تلك الطريقه من قبل

واستخدمها مع انواع اخرى من الداتا بيس

ولكن عند تجربة الكود على my sql

يعطيني الرساله التاليه

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'date between' at line 1

مع العلم كما قلت انو بيعمل بشكل صحيح مع الانواع الاخرى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ال # تعتبر ما بعدها comment

يمكنك عمل الإستعلام كما يلى

SELECT * FROM `DB` WHERE `date` between '1/7/2008' AND '20/7/2008'

طبعا نوع الحقل date هو DATETIME

و لكنى أعتقد أن هناك طريقة أفضل للتعامل مع التاريخ و الوقت , و جارى البحث

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

إضافة للتعامل مع التاريخ

بعد البحث

وجدت أنه يمكن إستخدام الدالة extract لإستخراج جزء من التاريخ لمقارنته

الدالة خاصة ب MYSQL 5.0

مثال

 SELECT * FROM `DB`
WHERE EXTRACT(YEAR_MONTH FROM `date`) = '200807'

الدالة extract ترجع بالشهر و السنة و أمكنتنى أن أقوم بالمقارنة بينها و بين القيمة '200807' و التى تعنى شهر 7 عام 2008

و للمزيد عن الدالة extract

http://dev.mysql.com/doc/refman/5.0/en/dat...unction_extract

ملحوظة :-

هذا الإستعلام بطئ هل هناك طريقة أخرى لعمل مثل هذا الإستعلام بصورة أسرع على السيرفر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

طريقة أخرى للتعامل مع التاريخ

الموضوع طلع كبيييييييييييييييييييييييييير :P

  SELECT * FROM `DB` WHERE DATE_FORMAT(`date`,'%d%c%Y') = '0372008'

هنا إستخدمت الدالة DATE_FORMAT

http://dev.mysql.com/doc/refman/5.0/en/dat...ion_date-format

لتعديل شكل التاريخ حتى يمكن التعامل معه بسهولة

هنا إستخدمت الصيغة %d%c%y لوضع اليوم و الشهر و التاريخ بجوار بعض فى صيغة رقم حتى يسهم التعامل معه

و من ثم يمكن مقارنته بأى شئ

و طبعا يمكن إستخدام between بأى من الطريقتين extract

  SELECT * FROM `date`
WHERE EXTRACT(YEAR_MONTH_DAY FROM `date`) BETWEEN '200807' AND '200808'

أو الطريقة التى ذكرتها الآن بإستخدام DATE_FORMAT

  SELECT * FROM `date` WHERE DATE_FORMAT(`date`,'%c%Y') BETWEEN '72008' AND '82008'

هذا ما لدى الآن

أعتقد أن هناك طرق أخرى و لكن الفيصل هو السرعة فى تنفيذ الإستعلام و هذا ما أبحث فيه الآن أرجو من الخبراء إفادتنا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا اخي الكريم

الكود يعمل ادا كان التاريخ مدخل بشكل يدوي

ولكن للاسف لا يعمل ادا كان متغير

سوف اضع لك جملة الاستعلام كما هي

 SQL = "SELECT log_no,date,time,State FROM in_out WHERE date between 'date1' AND date2'"

حيث ان date1 and date2

هي متغير يحتوي على تاريخ

للعلم انا الاحط انو اصلا الmysql لا تتعامل مع المتغيرات

يعني لازم ارفق القيمه بشكل يدوي في الكود

المطلوب هو كالتالي

استعلام بشروط

اولا رقم الموظف

ثانيا التاريخ محصور بين قيمتين

يعني اكود كالتالي

SQL = "SELECT log_no,date,time,State FROM in_out where ID="id "and date between 'date1' AND 'date2'"

للاسف الكود الثاني لا يعمل نهائيا

بينما ادا كان شرط واحد يجيب ادخال التاريخ بشكمل يدوي وليس كمتغير

هل من حل لهذه المشكلة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

آسف على التأخير فى الرد فقد كنت مشغولا كثيرا فى الفترة السابقة

للعلم انا الاحط انو اصلا الmysql لا تتعامل مع المتغيرات

يعني لازم ارفق القيمه بشكل يدوي في الكود

ال mysql ليس لها علاقة بالمتغيرات , فالمتغيرات يتم التعويض عنها داخل لغة البرمجة و يتم إرسال جملة ال sql كاملة إلى محرك قاعدة البيانات

أى لغة برمجة تستخدمين ؟؟ تأكدى من سلامة إستخدام الصيغة المناسبة للمتغير و ال single quote و ال double quote

للاسف الكود الثاني لا يعمل نهائيا

الدوال التى ذكرتها تعمل مع mysql 5.0 فقط

وده تعديل بسيط ( php طبعا :blush: )

$date1 = '2172008' // means 21/7/2008
$date2 = '2182008' // means 21/8/2008
$sql = "select log_no,date,time,state from in_out where DATE_FORMAT(`date`,'%d%m%Y') between '$date1' AND '$date2'"

و لكن : لا تنسى الدوال خاصة ب mysql 5.0

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

نفس المشكلة واجهتني .. ولا اجد لها حل

لاتعمل جملة السكيول الا اذا وضعت التاريخ يدويا

ولم تفلح معي محاولات دوال تحويل التاريخ

اكيد في حل ؟؟؟؟؟ ولكن وين وكيف ؟؟؟؟!!!11

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

انا من اقوم باستعلام بواسطو تاريخين يظهر بيانات ناقصة ليس كل البيانات في جدوال؟؟؟؟؟؟؟؟؟ما الحل ..انا استخدم php في عرض نتائج ع متصفح

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .