Избранная макс. дата и дата прежде

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

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

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

Это - один способ решить проблему этот путь, но существует лучшее

string weekend = DateTime.Now.DayOfWeek.ToString();
if (weekend == "Monday")
{
select ***** where max(date)-3 from *****
}
1
задан skaffman 5 July 2010 в 18:32
поделиться

4 ответа

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

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

0
ответ дан 2 September 2019 в 23:17
поделиться

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

1
ответ дан 2 September 2019 в 23:17
поделиться

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

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

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

1
ответ дан 2 September 2019 в 23:17
поделиться

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

Строка 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

0
ответ дан 2 September 2019 в 23:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: