Использование оператора SQL Order для отображения последних 60 дней записи

Имейте хранимую процедуру с базой данных SQL, которая возвращает все значения продуктов. В конце сохраненного процесса порядок отображается как

ORDER BY pf.rownum 

Я попытался включить эту строку в хранимую процедуру, чтобы показать последние 60 дней продуктов.

where
CreatedOn >=dateadd(day,datediff(day,0,GetDate())- 60,0)

Но я думаю, что продукты, созданные на дату, выходят за рамки даты. Есть ли способ включить выбор даты в строку ORDER BY и удалить это значение CreatedOn?

Это внутри AspDotNetStoreFront

Спасибо!


person Dean    schedule 25.06.2014    source источник
comment
Итак, что вы хотите, чтобы ваш запрос возвращал? Вы можете сделать ORDER BY CreatedON Desc, pf.rownum, чтобы самые новые были сверху.   -  person TMNT2014    schedule 25.06.2014
comment
Попробуйте CreatedOn >= dateadd(DD, -60, CONVERT(DATE, GETDATE(), 101)).   -  person user2989408    schedule 25.06.2014
comment
WHERE CreatedOn›GETDATE()-60 — это сокращение, которое я обычно использую   -  person UnhandledExcepSean    schedule 25.06.2014


Ответы (2)


Вы спрашиваете, как упорядочить по двум столбцам?
Если да, то код ниже должен сделать это.

ORDER BY pf.rownum ASC, pf.CreatedOn DESC 
person Matas Vaitkevicius    schedule 25.06.2014

Я думаю, что ваш синтаксис неверен в предложении where. Я не уверен, почему вы используете datediff(day, 0, GetDate()). Уберите это и вместо этого используйте dateadd(dd, -60, cast(Getdate() as date)). Единственное, что делает order by, это сообщает sql, как сортировать результаты. Порядок не должен влиять на то, какие данные возвращаются или не возвращаются.

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

cast(CreatedOn as date) >= dateadd(dd, -60, cast(Getdate() as date))

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

person Jenn    schedule 25.06.2014