Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL日期时间转换为字符串格式_Sql_Database_Vb.net_Datetime_Insert - Fatal编程技术网

SQL日期时间转换为字符串格式

SQL日期时间转换为字符串格式,sql,database,vb.net,datetime,insert,Sql,Database,Vb.net,Datetime,Insert,我有一些代码声明了一个对象变量,这个变量从现有的数据库字段中分配了一个值 Dim datestart As Object datestart = dbToDate(dr("DateStart")) 然后将变量传递给一个函数,该函数检查该变量是否为null,然后将其转换为datetime数据类型 Public Shared Function dbToDate(o As Object) As DateTime If o Is DBNull.Value Then

我有一些代码声明了一个对象变量,这个变量从现有的数据库字段中分配了一个值

Dim datestart As Object
datestart = dbToDate(dr("DateStart"))
然后将变量传递给一个函数,该函数检查该变量是否为null,然后将其转换为datetime数据类型

     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数据类型导致值超出范围


这是为什么?我如何修复它?

简单地说,您可以使用
toString
函数。还要检查你的时区。问题可能出在时区设置中

希望您将日期作为字符串传递给数据库,请尝试将日期作为Datetime变量而不是字符串传递

Public Shared Function sqlDate(dt As DateTime) As String

    Return dt.toString("yyyy-MM-dd")

End Function

对于您的Ref:

检查表中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/2014Ypu可能不需要将
DateTime
转换为字符串,而是查看查询的参数化。对不起,Sankar,我的错误,这是因为我在字符串的末尾添加了hhmmss tt。但是,我的一个日期为null,在名为dbToDate的函数中(请参见问题),它没有返回“Nothing”,而是返回12:00:00AM,因此此函数无法将其插入数据库。我怎样才能让它和这些一起工作?@joe,所以你把时间和日期连接起来了。对吗?我希望值只是一个日期。在数据库中,有4个日期时间。3表示没有时间的日期,4表示没有日期的时间。1日期和时间字段允许为空。对于“时间”字段,它可以正常工作,因为它被转换为“无”。但是,空日期转换为时间,这会导致问题