في مجال قواعد البيانات وتحديداً في MySQL، يعد البحث عن جميع السجلات التي تنتمي إلى يوم معين أمرًا شائعًا وحيويًا. من خلال استفسار فعّال، يمكنك الحصول بسهولة على جميع السجلات التي تم إنشاؤها في اليوم السابق.
لتحقيق ذلك، يمكنك استخدام تعبير SQL المناسب باستخدام الدالة BETWEEN
لتحديد النطاق الزمني الذي تريده. على سبيل المثال، في حالة الجدول المعطى:
sqlSELECT * 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
سيسرع من عمليات البحث بشكل كبير.
sqlCREATE INDEX idx_created_at ON your_table (created_at);
ثانيًا، إذا كان لديك حاجة مستمرة للبحث بناءً على التواريخ، يفضل استخدام تعبير DATE()
لاستخراج التاريخ فقط دون الوقت، حيث أننا في هذه الحالة لا نحتاج إلى دقة الوقت. هذا يمكن أن يُحسِّن الأداء أيضًا.
sqlWHERE DATE(created_at) = '2016-01-19';
ثالثًا، يمكنك استخدام دالة CURDATE()
للحصول على التاريخ الحالي، وذلك لتجنب الحاجة إلى تحديد التاريخ يدويًا.
sqlWHERE DATE(created_at) = CURDATE() - INTERVAL 1 DAY;
هذا سيعيد جميع السجلات التي تم إنشاؤها في اليوم السابق بغض النظر عن التاريخ الحالي.
في النهاية، يعتمد الأمر على حجم البيانات وتطلبات الأداء الخاصة بمشروعك، ولكن هذه النصائح يمكن أن تساعد في تحسين استعلاماتك وجعلها أكثر فعالية في سياق البحث عن سجلات في فترة زمنية معينة.