使用用户通过 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 以避免在转换为字符串和返回字符串时遇到一些麻烦。然后你可以做上面的事情。