如何查询 SQL 服务器中今天日期之后的日期

How to query with dates from SQL Server after today's date

我正在尝试使用 ADO.NET

查询我的数据库
string con = "Data Source=xx.xx.xx.xx\SqlExpress;Network Library=DBMSSOCN; Initial Catalog=DB;User ID=ID;Password=xxxxx;";
SqlConnection connection = new SqlConnection(con);

using (connection)
{
    string query = "SELECT * FROM Gigs where Date >= GetDate()";

    SqlCommand command = new SqlCommand(query, connection);

    var da = new SqlDataAdapter();
    connection.Open();

    SqlDataReader reader = command.ExecuteReader();
    da.SelectCommand = command;

    connection.Close();

    var ds = new DataSet();
    da.Fill(ds);

    gigs.DataSource = ds;
    gigs.DataBind();
}

代码执行正常,但显示的值不正确。我期待只看到今天之后的日期。然而,我看到了过去和未来的价值。就好像查询只是 SELECT * from Gigs

在 SQL 服务器中,列 Date 的类型为 date

我做错了什么?

使用DATEDIFF.

按如下方式更改您的字符串查询。

string query = "SELECT * FROM Gigs where DATEDIFF(day, GETDATE(), [Date]) > 0";

这将 select 日期列比今天更新的行。

从明天开始获取行的正确方法:

SELECT * FROM Gigs 
WHERE [Date] >= CAST(getdate() + 1 as date)

这也行

[Date] >= DATEADD(d, datediff(d, 0,getdate()),1)

使用 DATEDIFF 会使表达式不可搜索,从而导致性能不佳。

string query = "SELECT * FROM Gigs WHERE CONVERT(VARCHAR(10), @date, 111) > CONVERT(VARCHAR(10), GETDATE(),111)"