У меня есть таблица данных, которая обновляется каждый день кроме субботы и в воскресенье. Проблема заключается в так, чтобы, когда я получаю данные с макс. (дата) и макс. (дата)-1
Но это перестало работать, когда я пытаюсь получить данные в течение сегодня (понедельника) и вчера (воскресенья), когда макс. (дата)-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:
SELECT m.Navn, m.Beskrivelse, p_idag.Points AS Points_idag, p_igaar.Points AS Points_igaar FROM medlem m LEFT JOIN (SELECT * FROM point WHERE Datoen = '06 -09-2010 ') AS p_idag ON m.Navn = p_idag.Navn LEFT JOIN (SELECT * FROM point WHERE Datoen = '06-08-2010') AS p_igaar ON m.Navn = p_igaar.Navn ЗАКАЗАТЬ ПО m.Navn;
Первая дата выбирается пользователем, следующая дата - -1 день или -3