从DATETIME PICKER的日期搜索数据库

时间:2017-04-15 09:43:33

标签: c#

我希望在选择日期时从日期时间选择器按日期搜索所有数据 我无法通过此查询获得结果 例如8/4/2017我只想按日期结果日期和时间

        MessageBox.Show("Date they start: " + monthCalendar1.SelectionEnd.ToString("dd/MM/yyyy"));
        String date = monthCalendar1.SelectionEnd.ToString("dd/MM/yyyy");

        con.Open();
        SqlCommand cmd = con.CreateCommand();
        cmd.CommandType = CommandType.Text;//'%"+a+"%'
        cmd.CommandText = "Select * from selectItems where [last_stock_date] Like'" + date+ "%'";
        cmd.ExecuteNonQuery();
        DataTable dt = new DataTable();
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(dt);
        dataGridView1.DataSource = dt;
        con.Close();

这是数据库表选择:
IT IS DATABASE TABLE SELECTITEMS

结果没有来:
RESULT NOTHING COMING

1 个答案:

答案 0 :(得分:1)

如果DateTime init = monthCalendar1.SelectionEnd; DateTime finish = init.AddDays(1); con.Open(); SqlCommand cmd = con.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = @"Select * from selectItems where [last_stock_date] >= @init AND [last_stock_date] < @finish"; cmd.Parameters.Add("@init", SqlDbType.DateTime).Value = init; cmd.Parameters.Add("@finish", SqlDbType.DateTime).Value = finish; DataTable dt = new DataTable(); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); dataGridView1.DataSource = dt; con.Close(); 是DateTime列(并带有时间信息),那么您不能使用字符串对其进行搜索。这永远不会返回有意义的东西。

而是使用带有两个DateTime类型参数的参数化查询,一个用于下限(搜索日期的00:00),另一个用于搜索日期的上限(23:59:59.999)

src = "{{ route('searchajax') }}";
$("#search_text").autocomplete({
    source: function(request, response) {
        $.ajax({
            url: src,
            dataType: "json",
            data: {
                term : request.term
            },
            success: function(data) {
                response(data);
            }
        });
    },
    min_length: 3,
});

我还建议您将此代码使用的一次性对象(主要是连接)放在using语句