0

我有一个应该根据选定日期填充的 GridView,所以我使用了Calendar control.

问题

  • 由于日历控件的选定日期是 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) 但可以这样做吗?


编辑:

即使日历控件的选定日期和数据库中的字段都是 DateTime,搜索也不会起作用,因为使用日历控件搜索时,它的查询将是日期和时间示例2013-01-01 00:00:00.000,而在数据库中时间并不总是 00:00 :00 因此需要Between作为下面的答案。

4

3 回答 3

1

Calendar.SelectedDateDateTime。所以只需更改calendar1.SelectedDate.Datecalendar1.SelectedDate.

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

于 2013-04-08T23:14:47.523 回答
1

您可以使用 Date 字段从数据库中提取记录。我不认为在日期上使用 LIKE 是一个好主意。指定 From 和 To 日期范围以获得一天的数据:

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)
于 2013-04-08T23:26:21.427 回答
1

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

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

于 2013-04-08T23:57:25.263 回答