使用用户通过 winform 输入从 SQL 服务器获取日期
Getting date from SQL Server using users input through winform
我应该从用户那里获取日期,然后找到该日期之前的所有日期。
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);
是语法有问题还是这样不行?
您的 SQL 查询语法不正确。我相信你需要的是这个:
string query = "SELECT * FROM test3table WHERE datum" +
" < '" + @Datum + "'";
这应该构建一个看起来像这样的 SQL 查询:
SELECT * FROM test3table WHERE datum < '2017-12-06'
请注意,我将您的 <=
运算符更改为 <
以符合您对 "all dates before that date" 的声明需求。
还请记住,如果 datum
的类型为 DATETIME
,则将使用午夜时间计算日期值。所以 2017-12-06
读作 2017-12-06 00:00
.
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
以避免在转换为字符串和返回字符串时遇到一些麻烦。然后你可以做上面的事情。
我应该从用户那里获取日期,然后找到该日期之前的所有日期。
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);
是语法有问题还是这样不行?
您的 SQL 查询语法不正确。我相信你需要的是这个:
string query = "SELECT * FROM test3table WHERE datum" +
" < '" + @Datum + "'";
这应该构建一个看起来像这样的 SQL 查询:
SELECT * FROM test3table WHERE datum < '2017-12-06'
请注意,我将您的 <=
运算符更改为 <
以符合您对 "all dates before that date" 的声明需求。
还请记住,如果 datum
的类型为 DATETIME
,则将使用午夜时间计算日期值。所以 2017-12-06
读作 2017-12-06 00:00
.
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
以避免在转换为字符串和返回字符串时遇到一些麻烦。然后你可以做上面的事情。