无法将参数值从TimeSpan转换为DateTime

k80*_*0sg 1 .net sql vb.net asp.net

我试图从我的文本框字段值存储时间,但我得到了这个异常错误,我做错了什么?谢谢!:

Failed to convert parameter value from a TimeSpan to a DateTime.
Run Code Online (Sandbox Code Playgroud)

传递文本框值:

.CamActiveDateFrom = CDate(uitxtCamDateStart.Text.Trim)
Run Code Online (Sandbox Code Playgroud)

我的变量和属性:

Private _camActiveTimeFrom As Nullable(Of TimeSpan)

Public Property CamActiveTimeFrom() As Nullable(Of TimeSpan)

Get     

Return Me._camActiveTimeFrom        

End Get     

Set(ByVal value As Nullable(Of TimeSpan))            

Me._camActiveTimeFrom = value      

End Set    

End Property
Run Code Online (Sandbox Code Playgroud)

参数:

 AddInParameter(dbCommand,

    "@ActiveTimeFrom", DbType.Time, 6, DBNull.Value)                

    If (.CamActiveTimeFrom).HasValue Then

     dbCommand.Parameters("@ActiveTimeFrom").Value = .CamActiveTimeFrom     

End If
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

DbType.Time 记录为:

表示SQL Server DateTime值的类型.如果要使用SQL Server时间值,请使用SqlDbType.Time.

因此,要么使用SqlDbType.Time,要么将值设置为DateTime值而不是TimeSpan值.

不可否认,这个映射表显示了DbType.Time映射TimeSpan,因此这里存在一些不一致 - 但如果你可以使用更具体的类型,那只能是好的.

当然,很容易构建一个DateTimeTimeSpan,如果你想-你应该在特定日期决定总是使用(例如2000 1月1日),这样你就可以在数据库中比较值,并有效地得到的只是时间的比较位.