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