Dav*_*her 2 c# sql datetime datetimepicker winforms
这应该是一个简单的.在Windows窗体中使用日期时间选择器时,我想要执行SQL语句,如下所示:
string sql = "SELECT * FROM Jobs WHERE JobDate = '" + dtpJobDate.Text + "'";
Run Code Online (Sandbox Code Playgroud)
不幸的是,这实际上并没有提供任何结果,因为JobDate字段存储为DateTime值.我希望能够搜索这个日期的所有记录,无论存储的时间是什么,有什么帮助吗?
新查询:
SqlDataAdapter da2 = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT * FROM Jobs WHERE JobDate >= @p_StartDate AND JobDate < @p_EndDate";
cmd.Parameters.Add ("@p_StartDate", SqlDbType.DateTime).Value = dtpJobDate.Value.Date;
cmd.Parameters.Add ("@p_EndDate", SqlDbType.DateTime).Value = dtpJobDate.Value.Date.AddDays(1);
cmd.Connection = conn;
da2.SelectCommand = cmd;
da2.Fill(dt);
dgvJobDiary.DataSource = dt;
Run Code Online (Sandbox Code Playgroud)
非常感谢所有的帮助!
只有一个答案:使用参数化查询.
这是出于不同的原因:
因此,写下你的语句如下:
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT * FROM Jobs WHERE JobDate = @p_Date"
cmd.Parameters.Add ("@p_Date", SqlDbType.DateTime).Value = dtpJobDate.Value;
Run Code Online (Sandbox Code Playgroud)
如果你想忽略时间,那么我认为最好的办法是进行范围搜索,如果时间存储在数据库中,那就是.像这样(只是SQL查询):
SELECT * FROM Jobs WHERE JobDate >= @p_StartDate AND JobDate < @p_EndDate
Run Code Online (Sandbox Code Playgroud)
然后是StartDate dtpJobDate.Value.Date,而EndDate将是dtpJobDate.Value.Date.AddDays(1)
如果时间未存储在数据库中,则可以执行以下操作:
SELECT * FROM Jobs WHERE JobDate = @p_Date
Run Code Online (Sandbox Code Playgroud)
搜索参数应该在哪里 dtpJobDate.Value.Date