2010-07-05 1 views
1

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

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

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

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

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

ответ

0

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

Limit работа в это не распространяется MSSQL, но ТНХ – Sigenstroem

+0

@Sigenstroem - Но ВЫБРАТЬ TOP х ... будет работать в Темный Сокол предложил. – Walter

+0

Да, это работает, это также подход, который я использовал, чтобы заставить его работать. Так что спасибо за ответы.! – Sigenstroem

1

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

1

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

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

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

0

хмм вам может понадобиться сома больше деталей на струне

SQL-строка

ВЫБРАТЬ m.Navn, m.Beskrivelse, p_idag.Points А.С. Points_idag, p_igaar.Points AS Points_igaar ИЗ medlem м СЛЕВА 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 ORDER BY m.Navn;

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

 Смежные вопросы

  • Нет связанных вопросов^_^