【问题标题】:Get entries stored in database from yesterday [duplicate]获取昨天存储在数据库中的条目[重复]
【发布时间】:2013-06-14 10:39:17
【问题描述】:

我有一个 SQL 语句,它可以根据今天的日期获取一些数据,并将其填充到 linkbutton.Text 中。如果今天没有足够的数据,它应该用昨天的数据填充它。这是我到目前为止编写的 SQL 语句:

"SELECT * FROM table1 WHERE cat = 1 and datee = @dt ORDER BY datee DESC ";

【问题讨论】:

  • 最好删除 datee where 子句,只需添加 TOP(x) 选择以获得您认为可以接受的结果数

标签: c# asp.net sql database


【解决方案1】:

我建议不要限制日期,只需决定您想要多少个结果并选择TOP(x) 个数:

例如,如果您想要从今天开始并在需要时返回到明天(甚至更远)的 20 条最新结果,您可以这样做:

"SELECT TOP(20) * FROM table1 WHERE cat = 1 ORDER BY datee DESC ";

如果您可能有未来的日期,您可以通过添加以下 where 子句来限制它们:

"SELECT TOP(20) * FROM table1 WHERE cat = 1 AND datee <= @dt  ORDER BY datee DESC ";

@dt 是今天的日期


当然,如果你的规则更具体,即如果今天有 24 个条目,你应该返回 24 个结果,或者你不希望以这种方式限制总数,那么我建议做两个查询,例如:

var results = GetResultsForToday();

if(results.Count() < 20)//not enough!
    result.Add(GetResultsForYesterday());

【讨论】:

    【解决方案2】:

    或者您可以使用 BETWEEN 除了 TOP 声明,如:

    SELECT TOP(10) * FROM table1 WHERE cat = 1 and  
    datee BETWEEN DATEADD(day, -1, @dt) AND @dt 
    ORDER BY datee DESC 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-07
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      • 2012-07-10
      • 1970-01-01
      相关资源
      最近更新 更多