我试图用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
。
我做错了什么?
答案 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)"