البرمجة

استرجاع سجلات MySQL لليوم السابق باستخدام استعلامات فعّالة

في مجال قواعد البيانات وتحديداً في MySQL، يعد البحث عن جميع السجلات التي تنتمي إلى يوم معين أمرًا شائعًا وحيويًا. من خلال استفسار فعّال، يمكنك الحصول بسهولة على جميع السجلات التي تم إنشاؤها في اليوم السابق.

لتحقيق ذلك، يمكنك استخدام تعبير SQL المناسب باستخدام الدالة BETWEEN لتحديد النطاق الزمني الذي تريده. على سبيل المثال، في حالة الجدول المعطى:

sql
SELECT * FROM your_table WHERE created_at BETWEEN '2016-01-19 00:00:00' AND '2016-01-19 23:59:59';

هذا الاستعلام يقوم بتحديد جميع السجلات التي تم إنشاؤها في الفترة بين منتصف الليل (00:00:00) ولحظة قبل منتصف الليل التالي (23:59:59) في اليوم المحدد.

هنا يكمن الفعالية في استخدام تواريخ ثابتة وثوابت زمنية للبحث بدلاً من إدخال القيم يدويًا، مما يجعل الاستعلام قابلاً لإعادة الاستخدام في سياقات زمنية مختلفة.

عليك أيضًا التأكد من أن الحقل created_at لديك يحتوي على نوع بيانات يدعم التاريخ والوقت، مثل DATETIME.

لاحظ أن الأمثلة المقدمة تعتمد على تاريخ معين (2016-01-19) كمثال، ولكن يمكنك تعديل القيم وفقًا لتواريخك الفعلية.

المزيد من المعلومات

للتحديث على المزيد من المعلومات، يمكننا التعمق في كيفية تحسين أداء الاستعلام وتوجيه بعض النصائح المفيدة حول هذا الموضوع.

أولًا وقبل كل شيء، من المهم أن تكون حقول التاريخ مُفهرسة. فإذا كنت تعمل على جداول ذات حجم كبير، فإن إضافة فهرس على حقل created_at سيسرع من عمليات البحث بشكل كبير.

sql
CREATE INDEX idx_created_at ON your_table (created_at);

ثانيًا، إذا كان لديك حاجة مستمرة للبحث بناءً على التواريخ، يفضل استخدام تعبير DATE() لاستخراج التاريخ فقط دون الوقت، حيث أننا في هذه الحالة لا نحتاج إلى دقة الوقت. هذا يمكن أن يُحسِّن الأداء أيضًا.

sql
WHERE DATE(created_at) = '2016-01-19';

ثالثًا، يمكنك استخدام دالة CURDATE() للحصول على التاريخ الحالي، وذلك لتجنب الحاجة إلى تحديد التاريخ يدويًا.

sql
WHERE DATE(created_at) = CURDATE() - INTERVAL 1 DAY;

هذا سيعيد جميع السجلات التي تم إنشاؤها في اليوم السابق بغض النظر عن التاريخ الحالي.

في النهاية، يعتمد الأمر على حجم البيانات وتطلبات الأداء الخاصة بمشروعك، ولكن هذه النصائح يمكن أن تساعد في تحسين استعلاماتك وجعلها أكثر فعالية في سياق البحث عن سجلات في فترة زمنية معينة.

زر الذهاب إلى الأعلى