我有2列,一列用于开始时间,另一列用于结束时间。它们都属于nvarchar
类型,因此我可以比较它们。
我有一个文本框,可以从用户那里收到时间,并会自动回复以检查时间是否有效。
Dim compared_time_1 As DateTime
Dim compared_time_2 As DateTime
Dim select_time As SqlCommand
select_time = New SqlCommand("select Start_Time , End_Time from Clinic_Schedule where Schedule_no = @sch_no", appt_DB_1)
select_time.Parameters.AddWithValue("@sch_no", Sch_no)
Dim time_rdr As SqlDataReader
time_rdr = select_time.ExecuteReader()
While time_rdr.Read
compared_time_1 = DateTime.Parse(start_time_1)
compared_time_2 = DateTime.Parse(end_time_1)
start_time_1 = time_rdr(0).ToString
end_time_1 = time_rdr(1).ToString
If appt_time_txt0.Text >= start_time_1 And appt_time_txt0.Text <= end_time_1 Then
date_valid_lbl0.Visible = True
date_valid_lbl0.Text = "*Valid Time"
Else
time_valid_lbl0.Visible = True
time_valid_lbl0.Text = "*Not Valid Time"
End If
End While
time_rdr.Close()
我不知道我的逻辑XD是否有问题。
列中填充的数据采用以下格式:00:00AM or 00:00PM.
我将非常感谢你的帮助..谢谢
答案 0 :(得分:0)
好像你正在将字符串与日期数据类型进行比较。
确保将两者都转换为date数据类型,如下所示。 注意秒和'AM'之间的空格。
time1=CDate("3:19:40 AM")
time2=CDate("3:10:40 AM")
然后按如下方式进行比较:
if time1>time2 then
'logic
end if
答案 1 :(得分:0)
在从读卡器加载数据之前,您似乎正在进行解析。
compared_time_1 = DateTime.Parse(start_time_1)
compared_time_2 = DateTime.Parse(end_time_1)
start_time_1 = time_rdr(0).ToString
end_time_1 = time_rdr(1).ToString
应该是
start_time_1 = time_rdr(0).ToString
end_time_1 = time_rdr(1).ToString
compared_time_1 = DateTime.Parse(start_time_1)
compared_time_2 = DateTime.Parse(end_time_1)
但我甚至会以不同的方式做到这一点。如果您试图判断时间是否有效,则可以使用日期时间TryParse方法。也许一些重构也可能对你有所帮助。最后,请注意,如果计划项目可能在午夜之前开始并在第二天午夜之后结束,则比较时间可能会有问题。
Sub ReadingData()
'initializing reader stuff here...
Dim dtStart As DateTime, dtEnd As DateTime
If DateTime.TryParse(time_rdr(0).ToString, dtStart) = False Then
HandleInvalidTime()
End If
If DateTime.TryParse(time_rdr(1).ToString, dtEnd) = False Then
HandleInvalidTime()
End If
'Closing out reader stuff here...
HandleValidTime(dtStart, dtEnd)
End Sub
Sub HandleValidTime(TheStartTime As DateTime, TheEndTime As DateTime)
'Do Stuff
End Sub
Sub HandleInvalidTime()
'Do Stuff
End Sub