كيف أختار أحداث يوم كامل من عمود DATETIME؟

متوسطقراءة دقيقةآخر تحديث 2 أكتوبر 2026

SQL قواعد البيانات

الإجابة

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

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

مثال

CREATE TABLE events_date_example (id INT, starts_at DATETIME);
INSERT INTO events_date_example VALUES (1, '2026-10-02 15:30:00');
SELECT id FROM events_date_example
WHERE starts_at >= '2026-10-02 00:00:00' AND starts_at < '2026-10-03 00:00:00';

باختصار: لاختيار يوم كامل، ابدأ من منتصف ليله وتوقف قبل بداية اليوم التالي.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر فهمك

المطلوب جميع أحداث 2 أكتوبر. لماذا لا يحقق الاستعلام التالي هذا الهدف؟

CREATE TABLE events_date_quiz (id INT, starts_at DATETIME);
INSERT INTO events_date_quiz VALUES (1, '2026-10-02 00:00:00'), (2, '2026-10-02 15:30:00');
SELECT id FROM events_date_quiz WHERE starts_at = '2026-10-02';