首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向SQL日期查询添加时间

向SQL日期查询添加时间
EN

Stack Overflow用户
提问于 2015-10-11 13:17:23
回答 2查看 391关注 0票数 0
代码语言:javascript
运行
复制
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获取时间信息)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-11 13:28:25

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

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

  • 声明数据类型日期时间(SqlDbType.DateTime)的SQL参数。
  • 要传递给sql参数的值应该是数据类型DateTime,并且包含日期和时间部分。

实现这一目标的一种方法是使用相同的DateTimePciker来传递日期和时间部分,然后不要使用日期选择器Text属性,而是使用DateTimePicker.Value属性,它将为您提供日期和时间部分:

代码语言:javascript
运行
复制
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参数。就像这样:

代码语言:javascript
运行
复制
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读取时间部分。

票数 2
EN

Stack Overflow用户

发布于 2015-10-11 14:19:14

如果要将每个dateTimePicker分别用于日期或时间,可以定义DateTime变量并设置其日期值和时间值,如下所示:

代码语言:javascript
运行
复制
    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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33065405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档