سؤال

لدي جدول بيانات يتم تحديثه كل يوم باستثناء السبت والأحد. تكمن المشكلة في ذلك عندما أسترجع البيانات باستخدام Max (Date) و Max (Date) -1

لكنه فشل عندما أحاول استرداد البيانات لهذا اليوم (الاثنين) والأمس (الأحد) عندما يكون Max (Date) -1 غير موجود.

يمكن تحديث البيانات يومي السبت والأحد ، ولكن نظرًا لأن سعر الصرف أقوم بتحديثه. هل ستعطي أسعار الصرف نفسها الجمعة والسبت والأحد.

هذه طريقة واحدة لحل المشكلة بهذه الطريقة ، ولكن هناك أفضل

string weekend = DateTime.Now.DayOfWeek.ToString();
if (weekend == "Monday")
{
select ***** where max(date)-3 from *****
}
هل كانت مفيدة؟

المحلول

إليك بعض الخيارات الأخرى التي تعمل مع Target_Date التعسفي أيضًا.

إذا كان لديك سجل واحد فقط لكل تاريخ ،

SELECT * FROM table WHERE date<=target_date ORDER BY date DESC LIMIT 2

إذا كان لديك العديد من السجلات لكل تاريخ ،

SELECT * FROM table WHERE date IN (SELECT DISTINCT date FROM table WHERE date<=target_date ORDER BY date DESC LIMIT 2)

يمكنك أيضًا استخدام وظائف التاريخ/الوقت لقاعدة البيانات الخاصة بك للتحقق من يوم الاثنين بالطبع.

نصائح أخرى

يمكنك تحديد أحدث سجل يبلغ من العمر يوم واحد على الأقل. ثم عطلة نهاية الأسبوع ليست حالة خاصة.

أنت تحاول بشكل فعال العثور على ثاني أعلى تاريخ في مجموعة البيانات.

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

ستفشل أي طريقة أخرى في الأيام الأخرى التي لا يتم فيها تحديث الأسعار ، على سبيل المثال عيد الميلاد.

حسنًا ، قد تحتاج إلى مزيد من التفاصيل على السلسلة

سلسلة SQL هي

حدد M.Navn ، M.Beskrivelse ، p_idag.points as points_idag ، p_igaar.points as points_igaar من medlem m اليسار اليسار (حدد * من نقطة حيث datoen = '06 -09-2010 ') كـ p_idag على m.navn = p_idag. Navn Left Join (SELECT * from point where datoen = '06 -08-2010 ') as p_igaar on m.navn = p_igaar.navn order by m.navn ؛

يتم تحديد التاريخ الأول من قبل المستخدم ، والتاريخ التالي في التاريخ -1 يوم أو -3

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