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
需要在此查询中添加时间检查(我正在从dateTimePicker2和dateTimePicker4获取时间信息) 需要将时间检查添加到此查询中 代码的问题在于,您只将要检查的日期部分传递给SQL查询。为了使查询同时检查日期和时间部分,您必须: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
- 声明数据类型datetime(
)的SQL参数SqlDbType.datetime
- 传递给sql参数的值应为数据类型
,并包含日期和时间两部分DateTime
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的意思是“更清楚地解释你想做什么”。