Выберите максимальную дату и дату до - PullRequest
1 голос
/ 05 июля 2010

У меня есть таблица данных, которая обновляется каждый день, кроме субботы и воскресенья. Проблема заключается в том, что когда я получаю данные с max (дата) и max (дата) -1

Но происходит сбой, когда я пытаюсь получить данные за сегодня (понедельник) и вчера (воскресенье), когда max (дата) -1 не существует.

данные могут быть обновлены в субботу и воскресенье, но, так как это обменный курс, я обновляю. Даст ли он одинаковые курсы обмена в пятницу, субботу и воскресенье.

Это один из способов решить проблему таким образом, но есть лучший

string weekend = DateTime.Now.DayOfWeek.ToString();
if (weekend == "Monday")
{
select ***** where max(date)-3 from *****
}

Ответы [ 4 ]

1 голос
/ 05 июля 2010

Вы фактически пытаетесь найти вторую дату в наборе данных.

Найти самую высокую дату в данных.Найдите значения меньше этого, ограничьте результаты до 1, и у вас есть предыдущий день в наборе данных.

Любой другой метод не будет работать в другие дни, когда ставки не обновляются, например, Рождество.

1 голос
/ 05 июля 2010

Вы можете выбрать самую новую запись, возраст которой не менее одного дня. Тогда выходные не особый случай.

0 голосов
/ 09 июля 2010

хм, вам может потребоваться более подробная информация о строке

Строка sql:

ВЫБРАТЬ m.Navn, m.Beskrivelse, p_idag.Points AS Points_idag, p_igaar.Points AS Points_igaar ОТ СОЕДИНЕНИЯ m СЛЕДУЮЩЕЕ СОЕДИНИТЬ (ВЫБРАТЬ * ИЗ ТОЧКИ, ГДЕ Datoen = '06 -09-2010 ') КАК p_idag ON m.Navn = p_idag.Navn СЛЕДУЮЩЕЕ СОЕДИНИТЬ (ВЫБРАТЬ * ОТ ТОЧКИ ГДЕ Datoen = '06 -08-2010 ') КАК p_igaar ON m.Navn = p_igaar.Navn ЗАКАЗАТЬ m.Navn;

Первая дата выбирается пользователем, следующая дата - -1 день или -3

0 голосов
/ 05 июля 2010

Вот некоторые другие опции, которые также работают с произвольной датой 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)

Вы также можете использовать функции даты / времени в вашей базе данных для проверки на понедельник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...