我想将时间值与日期时间值进行比较

时间:2011-08-24 21:44:25

标签: vb.net datetime

我想根据日期和时间过滤我的结果....我将日期存储在一个单独的字段中,该字段是datetime数据类型...另一个字段存储时间值但是因为它是日期时间数据类型所以它存储当前系统日期以及输入的时间。现在,当我使用日期过滤结果时,它运行良好并显示特定时间段之间的结果,例如2011年10月12日至2011年12月15日之间的日期...但是当我想显示时间结果时它不会t显示任何结果......

我正在使用dataadapter和数据集从sql server数据库中检索记录...请告诉我将文本框中的时间值与存储在数据库中的日期时间值进行比较的解决方案,以便我在特定时间之间得到结果中午12:00至下午6:00

更清楚:

实际上我的日期时间值存储在数据库中。我从文本框中获取的是时间值。我想从数据库中提取这些在给定时间值之间的结果....为了更简洁,我的应用程序是体育俱乐部的预订系统,并提供查看alreaady预订的选项..这里我提供两个选项可以查看特定游戏的所有预订或过滤预订。在过滤器预订中,一个选项是过滤日期和时间...日期选项运行正常但问题在于时间部分...我提供两次但无法查看它们之间的预订...

我的代码是:

        Dim prmtimefrom As New SqlParameter("@booking_time", SqlDbType.DateTime)
        prmtimefrom.Value = TextBox3.Text

        Dim prmtimeto As New SqlParameter("@booking_tim", SqlDbType.DateTime)
        prmtimeto.Value = TextBox4.Text




        Dim da As New SqlDataAdapter("select * from Bookings where booking_time Between @booking_time AND @booking_tim AND game = " & x, con)   ' x is the name of a specific game

        da.SelectCommand.Parameters.Add(prmtimefrom)
        da.SelectCommand.Parameters.Add(prmtimeto)
        da.Fill(ds, "Bookings")

2 个答案:

答案 0 :(得分:0)

我不确定您是否在vb.net中询问如何执行此操作,或者如何在SQL中从数据库执行此操作。要在.NET中过滤,您需要使用DateTime.TimeOfDay属性。一个简单的例子是:

'Set the from time to start Jan 1, 2011 at 8:00am
Dim startTime as DateTime = New DateTime(2011, 1, 1, 8, 0, 0)

'Set the to time to end Feb 3, 2006 at 1:30pm
Dim endTime as DateTime = New DateTime(2006, 2, 3, 13, 30, 0)

'Compare the current time to the start / end times
'Notice that the dates are ignored, we are only comparing times
If Now.TimeOfDay >= startTime.TimeOfDay AndAlso Now.TimeOfDay <= endTime.TimeOfDay Then
    MsgBox("Within time span")
Else
    MsgBox("Outside of time span")
End If

答案 1 :(得分:0)

这样的事情:

Dim starting = TimeSpan.Parse("12:00")
Dim ending = TimeSpan.Parse("18:00")

Dim query = _
    From dr in dt.Rows.Cast(Of DataRow)() _
    Let tod = dr.Field(Of DateTime)(0).TimeOfDay _
    Where tod >= starting AndAlso tod < ending _
    Select dr