我应该从用户那里获取日期,然后在该日期之前找到所有日期。
DateTime dat = dateTimePicker1.Value.Date;
string datS = dat1.ToString("yyyy-MM-dd");
string query = "SELECT * FROM test3table WHERE datum" +
" <= " + "datum LIKE '%' + @Datum + '%'";
// '2017-12-06' -> works fine
SqlCommand comm = new SqlCommand(query, conn);
comm.Parameters.AddWithValue("@Datum", datS);
语法有问题,或者这样做不行吗?
答案 0 :(得分:0)
您的SQL查询语法不正确。我相信你需要的是:
string query = "SELECT * FROM test3table WHERE datum" +
" < '" + @Datum + "'";
这应该构造一个如下所示的SQL查询:
SELECT * FROM test3table WHERE datum < '2017-12-06'
请注意,我已将<=
运营商更改为<
,以符合您对“该日期之前的所有日期”的规定需求。
另请注意,如果datum
的类型为DATETIME
,则日期值将以午夜时间进行评估。因此2017-12-06
被视为2017-12-06 00:00
。
答案 1 :(得分:0)
DateTime dat = dateTimePicker1.Value.Date;
string query = "SELECT * FROM test3table WHERE datum <= @Datum";
SqlCommand comm = new SqlCommand(query, conn);
comm.Parameters.AddWithValue("@Datum", dat );
将列类型更改为DateTime
,以便在转换为字符串和返回时节省一些麻烦。然后你可以做上面的事情。