0

有一个带有返回所有产品值的 SQL 数据库的存储过程。在存储过程的末尾,订单显示为

ORDER BY pf.rownum 

我试图在存储过程中包含这一行以显示最近 60 天的产品

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

但我认为日期创建的产品超出了日期范围。有没有办法在 ORDER BY 行中包含日期选择并删除这个 CreatedOn 值?

这是在 AspDotNetStoreFront 中

谢谢!

4

2 回答 2

2

你问如何按两列排序?
如果是,那么下面的代码应该这样做。

ORDER BY pf.rownum ASC, pf.CreatedOn DESC 
于 2014-06-25T16:15:13.967 回答
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 是日期时间并且您不这样做,则时间将影响数据是否包含在结果中。

于 2014-06-25T16:19:49.603 回答