繁体   English   中英

按日期搜索Gridview,但日历控件选择器(即DateTime)同时包含日期和时间,例如:2013-01-01 00:00:00.000

[英]Searching Gridview by Date, but the Calendar control picker (that is DateTime) includes the date and also the time, example: 2013-01-01 00:00:00.000

我有一个GridView,应该根据选择的日期进行填充,因此我使用了Calendar control

问题

  • 由于Calendar控件的选定日期为datetime,可惜在选定日期Calendar似乎是格式为dd-MM-yyy
    范例 2013-02-15
  • 而数据库中的date field的类型为datetime含义是dd-MM-yyyy HH:mm:SS.ms
    范例 2013-02-15 09:02:03.253

因此,由于Calendar控件和Database字段的类型不同,因此不会有结果。


我尝试了什么

SqlDataSource1.SelectCommand = "Select * from table1 where start_date Like '% " & calendar1.SelectedDate.Date & " %' "

如您所见,我在后面的代码中使用了sqldatasource,并且我使用了Like但是即使使用Like 由于数据库不仅具有日期而且具有时间,因此未显示任何结果。

我也在考虑更改sql查询本身,也就是更改字段start_date ,以忽略时间(HH:mm:SS.ms),但是可以这样做吗?


编辑:

即使Calendar Control的选定日期和数据库中的字段均为DateTime,搜索也将无法进行,因为当使用Calendar Control搜索时,其查询将是Date and Time示例2013-01-01 00:00:00.000 DB的时间并不总是00:00:00,因此下面的答案之间需要。

Calendar.SelectedDateDateTime 因此,只需将calendar1.SelectedDate.Date更改为calendar1.SelectedDate

证明: http : //msdn.microsoft.com/ru-ru/library/system.web.ui.webcontrols.calendar.selecteddate.aspx

您可以使用Date通过DateTime字段从数据库中提取记录。 我不认为在日期上使用LIKE是个好主意。 指定“从”和“到”日期范围以获取一天的数据价值:

SqlDataSource1.SelectCommand = "Select * from table1 where start_date >" & calendar1.SelectedDate.Date & " AND start_date < " & calendar1.SelectedDate.Date.AddDays(1)

或使用BETWEEN运算子:

SqlDataSource1.SelectCommand = "Select * from table1 where start_date between " & calendar1.SelectedDate.Date & " AND " & calendar1.SelectedDate.Date.AddDays(1)

格式化仅在显示数据时才重要。 基本上,日期是整数,日期时间是浮点数。

根据在日期选择器中选择的内容创建一个.net DateTime对象。 然后将其转换为您在查询中使用的查询参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM