【问题标题】:C# SQL statement Date RangeC# SQL 语句日期范围
【发布时间】:2020-09-30 15:33:06
【问题描述】:

我想使用 SQL 语句来“过滤”或显示日期范围内的数据。

这是一个例子:

SELECT PRODUCTNAME, PRODUCTID, DESCRIPTION, EXPIREDDATE 
FROM PRODUCT TABLE 
WHERE EXPIREDDATE < (SELECT GETDATE())

上面的查询例如可以得到一个产品的ExpiredDate

现在我正试图让用户知道下个月(将由他们自己输入)即将过期的产品列表。

让我详细说明一下:如果用户输入“3”,那么从今天开始假设 2020-01-01,直到接下来的 3 个月,即 2020-04-01,当ExpiredDate 在该日期范围内时,产品列表将显示给用户

public object expiredProduct (int month) //month will be user inputted value 
{
    // I skipped database connection here
    SqlCommand command = new SqlCommand();

    // what should I write here for comparing the date?
    command.CommandText = SELECT PRODUCTNAME, PRODUCTID, DESCRIPTION, EXPIREDDATE FROM PRODUCT TABLE WHERE EXPIREDDATE < (SELECT GETDATE())  

    return list; // I return back my data here
}

上面的查询应该怎么写?

要求

我的日期是DateTime 数据类型。我正在使用 C# Web API。

【问题讨论】:

  • 您需要将参数添加到command.Parameters 并在查询中引用它们。
  • @John 你的意思是我需要创建2个参数,分别存储今天日期SELECT GETDATE()和另一个日期?但是现在我坚持如何根据用户输入将 month 添加到今天的日期

标签: c# sql-server linq asp.net-web-api


【解决方案1】:

使用参数来定义日期范围的上限和下限 - 如下所示:

public object expiredProduct (int month) //month will be user inputted value 
{
    // I skipped database connection here
    SqlCommand command = new SqlCommand();

    // what should I write here for comparing the date?
    command.CommandText = @"SELECT PRODUCTNAME, PRODUCTID, DESCRIPTION, EXPIREDDATE 
                            FROM PRODUCT TABLE 
                            WHERE EXPIREDDATE BETWEEN @FromDate AND @ToDate;";

    // then set these values
    command.Parameters.Add("@FromDate", SqlDbType.DateTime).Value = DateTime.Today;
    command.Parameters.Add("@ToDate", SqlDbType.DateTime).Value = DateTime.Today.AddMonths(month);

    return list; // I return back my data here
}

【讨论】:

  • 谢谢@marc_s!有关更多信息,我是否可以知道如果我们可以直接使用 C# 代码(而不是通过 Linq)添加 month
  • @Lawraoke:那不是 LINQ - 那是标准 C#/基类库代码
猜你喜欢
  • 2021-10-30
  • 2019-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
相关资源
最近更新 更多