كيف يمكنني تحديد الإدخالات ليوم معين من أيام الأسبوع باستخدام SQL؟

StackOverflow https://stackoverflow.com/questions/602245

  •  03-07-2019
  •  | 
  •  

سؤال

يمكنني استخدام هذا الاستعلام لتحديد جميع الطلبات بتاريخ يوم الاثنين:

SELECT * from orders WHERE strftime("%w", date)="1";

لكن على حد علمي، لا يمكن تسريع ذلك باستخدام فهرس، كما هو الحال في كل صف strftime يجب أن تحسب.

يمكنني إضافة حقل إضافي مع تخزين أيام الأسبوع، ولكني أريد تجنب ذلك.هل هناك حل يستخدم الفهرس أم أنني مخطئ وهذا الاستعلام يعمل بشكل جيد بالفعل؟(وهذا يعني أنه ليس من الضروري المرور عبر كل صف لحساب النتيجة.)

هل كانت مفيدة؟

المحلول

إذا أردت الجميع في أيام الاثنين على الإطلاق، ستحتاج إلى فحص ميداني أو متسلسل.ما يمكنك فعله هو حساب التواريخ الفعلية، على سبيل المثال، لجميع أيام الاثنين خلال عام واحد.الحالة WHERE date IN ('2009-03-02', '2009-02-23', ...) سوف تستخدم مؤشر

نصائح أخرى

وأو كبديل لاقتراح vartec، وبناء الجدول الزمني تتألف فقط من تاريخ واسم اليوم لكل يوم في السنة (سواء فهرستها) ثم قم بإجراء الاستعلام الخاص بك عن طريق القيام JOIN ضد هذا الجدول.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top