2013-06-14 2 views
-8

У меня есть оператор SQL, который получает некоторые данные на основе сегодняшней даты и заполняет его в linkbutton.Text. Если на сегодняшний день данных недостаточно, он должен заполнить его данными со вчерашнего дня. Вот SQL заявление я написал до сих пор:Получить записи, хранящиеся в базе данных со вчерашнего дня

"SELECT * FROM table1 WHERE cat = 1 and datee = @dt ORDER BY datee DESC "; 
+4

Лучше всего отказаться от предложения 'datee' where и просто добавить выбор« TOP (x) », чтобы узнать, сколько результатов вы считаете приемлемыми – musefan

ответ

0

Или вы могли бы использовать BETWEEN в стороне от TOP заявления, как:

SELECT TOP(10) * FROM table1 WHERE cat = 1 and 
datee BETWEEN DATEADD(day, -1, @dt) AND @dt 
ORDER BY datee DESC 
1

Я хотел бы предложить, а не ограничивающей дату, просто решить, сколько результатов вы хотите, и выбрать TOP(x) их количество:

Например, если вы хотите 20 последних результатов, начиная сегодня и уходящие на завтра (и далее), если это необходимо, вы можете сделать это:

"SELECT TOP(20) * FROM table1 WHERE cat = 1 ORDER BY datee DESC "; 

Если pottentially есть даты в будущем вы можете ограничить их, добавив следующее где пункт:

"SELECT TOP(20) * FROM table1 WHERE cat = 1 AND datee <= @dt ORDER BY datee DESC "; 

Где @dt Дата сегодня


Конечно, если вы правила более конкретно, то есть вы должны вернуть 24 результаты, если сегодня имеет 24 записей, или вы не хотите, в общей сложности ограничено в таким образом, то я предложил бы делать два запроса, например:

var results = GetResultsForToday(); 

if(results.Count() < 20)//not enough! 
    result.Add(GetResultsForYesterday()); 
Смежные вопросы