【发布时间】:2016-07-29 08:38:46
【问题描述】:
我有一些代码声明了一个对象变量,并且这个变量从现有的数据库字段中分配了一个值。
Dim datestart As Object
datestart = dbToDate(dr("DateStart"))
该变量然后通过一个检查它是否为空的函数传递,然后将其转换为日期时间数据类型。
Public Shared Function dbToDate(o As Object) As DateTime
If o Is DBNull.Value Then
Return Nothing
Else
Return Convert.ToDateTime(o)
End If
End Function
我需要做的最后一件事是将其转换为日期格式的字符串 DD/MM/YYYY,以便我可以将其插入到新数据库中。
我目前的功能是
Public Shared Function sqlDate(dt As DateTime) As String
Return "'" & Format(dt, "yyyyMMdd") & "'"
End Function
但是,当我运行代码时,我收到以下错误消息
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。
为什么会这样,我该如何解决?
【问题讨论】:
-
检查表中 DateStart 列的值。一行或多行包含超出 c# DateTime 类型指定范围的值。
-
@TheShooter 这是 vb.net,不是 c#
-
对不起,我忘了注明语言,但语言无关紧要。所有 .net 语言的基础数据类型都是相同的。在 datestart = dbToDate(dr("DateStart")) 语句上放一个断点,检查 dr("DateStart") 的值,看看它是否位于 DateTime.Mix 和 DateTime.Max 之间。或者记下 DateTime.Min 和 DateTime.Max 的值,并在 sql 表中查找值超出此范围的行。
-
@TheShooter 值是 3/1/2014
-
Ypu 可能不需要将
DateTime转换为字符串,而是查看参数化查询。
标签: sql database vb.net datetime insert