【问题标题】:Using SQL Order statement to show last 60 days on record使用 SQL Order 语句显示最近 60 天的记录
【发布时间】:2014-06-25 16:07:04
【问题描述】:

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

ORDER BY pf.rownum 

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

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

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

这是在 AspDotNetStoreFront 中

谢谢!

【问题讨论】:

  • 那么基本上你希望你的查询返回什么?你可以做 ORDER BY CreatedON Desc, pf.rownum 以便最新的在上面。
  • 试试CreatedOn >= dateadd(DD, -60, CONVERT(DATE, GETDATE(), 101))
  • WHERE CreatedOn>GETDATE()-60 是我通常使用的速记

标签: sql aspdotnetstorefront


【解决方案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 是日期时间并且您不这样做,则时间将影响数据是否包含在结果中。

    【讨论】:

      猜你喜欢
      • 2017-07-01
      • 2011-12-20
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      相关资源
      最近更新 更多