如何在今天的日期之后查询来自SQL Server的日期

时间:2016-02-03 11:58:17

标签: sql-server ado.net

我试图用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 Server中,列Date的类型为date

我做错了什么?

3 个答案:

答案 0 :(得分:1)

从明天和前方获取行的正确方法:

Datagrid1

这也可行

Datatable

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

答案 1 :(得分:0)

使用DATEDIFF

更改字符串查询,如下所示。

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

这将选择Date列比今天更新的行。

答案 2 :(得分:0)

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