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

#sql #aspdotnetstorefront

#sql #aspdotnetstorefront

Вопрос:

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

 ORDER BY pf.rownum 
 

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

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

Но я думаю, что продукты, созданные на дату, находятся за пределами области действия даты. Есть ли способ включить выбор даты в ПОРЯДОК строк и удалить это значение CreatedOn?

Это в AspDotNetStorefront

Спасибо!

Комментарии:

1. Итак, в основном, что вы хотите, чтобы ваш запрос возвращал? Вы могли бы сделать ORDER, создав на Desc, pf.rownum, чтобы самые новые были сверху.

2. Попробуйте CreatedOn >= dateadd(DD, -60, CONVERT(DATE, GETDATE(), 101)) .

3. ГДЕ CreatedOn> GETDATE()-60 — это сокращение, которое я обычно использую

Ответ №1:

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

 ORDER BY pf.rownum ASC, pf.CreatedOn DESC 
 

Ответ №2:

Я думаю, что ваш синтаксис неверен в предложении 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 — это дата-время, и вы этого не сделаете, время повлияет на то, включены ли данные в результаты или нет.