使用通过winform输入的用户从SQL Server获取日期

时间:2017-12-07 15:37:31

标签: c# winforms sql-server-express

我应该从用户那里获取日期,然后在该日期之前找到所有日期。

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);

语法有问题,或者这样做不行吗?

2 个答案:

答案 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,以便在转换为字符串和返回时节省一些麻烦。然后你可以做上面的事情。