var datadb1 = DateTime.ParseExact(dateTimePicker1.Text, "dd/MM/yyyy", null);
var timedb1 = DateTime.ParseExact(dateTimePicker2.Text, "HH:mm:ss", null);
var datadb2 = DateTime.ParseExact(dateTimePicker3.Text, "dd/MM/yyyy", null);
var timedb2 = DateTime.ParseExact(dateTimePicker4.Text, "HH:mm:ss", null);
commanddb.CommandText =
            "SELECT * FROM testtab WHERE datatime >= @from and datatime < @to";
commanddb.Parameters.AddWithValue("@from", datadb1);
commanddb.Parameters.AddWithValue("@to", datadb2);    需要向该查询添加时间检查(我正在从dateTimePicker2和dateTimePicker4获取时间信息)。
发布于 2015-10-11 13:28:25
需要将时间检查添加到此查询中
代码的问题是,您只将日期部分传递给SQL查询。为了使查询同时检查日期和时间部分,您必须:
SqlDbType.DateTime)的SQL参数。DateTime,并且包含日期和时间部分。实现这一目标的一种方法是使用相同的DateTimePciker来传递日期和时间部分,然后不要使用日期选择器Text属性,而是使用DateTimePicker.Value属性,它将为您提供日期和时间部分:
SqlParameter fromParam= new SqlParameter("@from", SqlDbType.DateTime);
fromParam.Value = dateTimePicker1.Value;
SqlParameter toParam= new SqlParameter("@to", SqlDbType.DateTime);
toParam.Value = dateTimePicker2.Value;
commanddb.Parameters.Add(fromParam);
commanddb.Parameters.Add(toParam);或者,将来自不同日期选择器的日期部分和时间部分添加到同一个DateTime变量中,然后将其传递给sql参数。就像这样:
var datadb1 = DateTime.Parse(dateTimePicker1.Value.ToShortDateString()); 
var timedb1 = DateTime.Parse(dateTimePicker2.Value.ToShortTimeString());
DateTime datetimeCombined1 = datadb1 + new TimeSpan(timedb1.Hour, 
                                                    timedb1.Minute,
                                                    timedb1.Second);然后,您必须将这个变量datetimeCombined1传递给SQL参数,与第二个日期时间范围相同,在传递它之前,必须将这两个部分组合在一起。
这是假设您使用dateTimePicker1只读取日期部分,使用dateTimePicker2读取时间部分。
发布于 2015-10-11 14:19:14
如果要将每个dateTimePicker分别用于日期或时间,可以定义DateTime变量并设置其日期值和时间值,如下所示:
    DateTimePicker dateTimePickerFromDate = new DateTimePicker();
    DateTimePicker dateTimePickerFromTime = new DateTimePicker();
    DateTimePicker dateTimePickerToDate = new DateTimePicker();
    DateTimePicker dateTimePickerToTime = new DateTimePicker();
    DateTime fromDateTime = new DateTime(dateTimePickerFromDate.Value.Year, 
        dateTimePickerFromDate.Value.Month, dateTimePickerFromDate.Value.Day, 
        dateTimePickerFromTime.Value.Hour, dateTimePickerFromTime.Value.Minute, 
        dateTimePickerFromTime.Value.Second);
    DateTime toDateTime = new DateTime(dateTimePickerToDate.Value.Year, 
        dateTimePickerToDate.Value.Month, dateTimePickerToDate.Value.Day, 
        dateTimePickerToTime.Value.Hour, dateTimePickerToTime.Value.Minute, 
        dateTimePickerToTime.Value.Second);
    commanddb.CommandText =
    "SELECT * FROM testtab WHERE datatime >= @from and datatime < @to";
    commanddb.Parameters.AddWithValue("@from", fromDateTime);
    commanddb.Parameters.AddWithValue("@to", toDateTime);https://stackoverflow.com/questions/33065405
复制相似问题