C# 向SQL日期查询添加时间 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= “从测试选项卡中选择*,其中datatime>=@FROM和datatime=@FROM和datatime

C# 向SQL日期查询添加时间 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= “从测试选项卡中选择*,其中datatime>=@FROM和datatime=@FROM和datatime,c#,sql,time,datetimepicker,C#,Sql,Time,Datetimepicker,需要在此查询中添加时间检查(我正在从dateTimePicker2和dateTimePicker4获取时间信息) 需要将时间检查添加到此查询中 代码的问题在于,您只将要检查的日期部分传递给SQL查询。为了使查询同时检查日期和时间部分,您必须: 声明数据类型datetime(SqlDbType.datetime)的SQL参数 传递给sql参数的值应为数据类型DateTime,并包含日期和时间两部分 实现这一点的一种方法是使用相同的DateTimePciker传递日期和时间部分,然后不要使用da

需要在此查询中添加时间检查(我正在从dateTimePicker2和dateTimePicker4获取时间信息)

需要将时间检查添加到此查询中

代码的问题在于,您只将要检查的日期部分传递给SQL查询。为了使查询同时检查日期和时间部分,您必须:

  • 声明数据类型datetime(
    SqlDbType.datetime
    )的SQL参数
  • 传递给sql参数的值应为数据类型
    DateTime
    ,并包含日期和时间两部分
实现这一点的一种方法是使用相同的DateTimePciker传递日期和时间部分,然后不要使用datetimepicker
Text
属性,而是使用属性,它将同时提供日期和时间部分:

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

或者,将来自不同DateTimePicker的日期部分和时间部分添加到相同的
DateTime
变量,然后再将其传递给sql参数。大概是这样的:

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);
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参数,与第二个datetime范围相同,在传递它之前必须将这两个部分合并


这是假设您使用的是
dateTimePicker1
仅读取日期部分,而
dateTimePicker2
仅读取时间部分。

如果您想单独使用每个datetimepickerfordate或time,您可以定义DateTime变量并设置其日期值和时间值,如下所示:

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);
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);
DateTimePicker dateTimePickerFromDate=new DateTimePicker();
DateTimePicker dateTimePickerFromTime=新的DateTimePicker();
DateTimePicker dateTimePickerToDate=新的DateTimePicker();
DateTimePicker dateTimePickerToTime=new DateTimePicker();
DateTime fromDateTime=新日期时间(dateTimePickerFromDate.Value.Year,
dateTimePickerFromDate.Value.Month、dateTimePickerFromDate.Value.Day、,
dateTimePickerFromTime.Value.Hour,dateTimePickerFromTime.Value.Minute,
dateTimePickerFromTime.Value.Second);
DateTime toDateTime=新的日期时间(dateTimePickerToDate.Value.Year,
dateTimePickerToDate.Value.Month,dateTimePickerToDate.Value.Day,
dateTimePickerToTime.Value.Hour,dateTimePickerToTime.Value.Minute,
dateTimePickerToTime.Value.Second);
commanddb.CommandText=
“从测试选项卡中选择*,其中datatime>=@FROM和datatime<@to”;
commanddb.Parameters.AddWithValue(“@from”,fromDateTime);
commanddb.Parameters.AddWithValue(“@to”,toDateTime);

太好了。“需要在此查询中添加时间检查”是什么意思?示例数据和期望的结果如何?这是我的第一个sql项目。你的意思不是使用4个日期时间选择器,而是使用2个?我想Gordon的意思是“更清楚地解释你想做什么”。