0

为什么这个字符串不能通过 VB.Net 在 Windows 7 中工作?

update [table] 
set [newlycreatedemptycolumn] = CAST(ENTRYEXPIREDATE + TEMPTIME as datetime)
  • entryexpiredate是一种char数据类型,即“2013-10-18”
  • temptime是一种char数据类型,即“23:59:00”

它可以在我的 Windows XP 机器上完美运行,但不能在 Windows 7 上运行。

我通过 VB.Net 传递这个查询字符串。我错过了什么?

strSQL = "update [table] set [dateTIMEcolumn] = CAST(ENTRYEXPIREDATE+TEMPTIME as datetime)"

Using connection As New SqlConnection(conStr)
    Dim command As New SqlCommand(strSQL, connection)
    command.Connection.Open()
    command.ExecuteNonQuery()
    command.Connection.Close()
End Using

我收到此错误消息:

消息 242,级别 16,状态 3,第 1 行
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。

4

1 回答 1

1

您需要在日期和时间值之间添加一个空格:

CAST(ENTRYEXPIREDATE + ' ' + TEMPTIME

否则,如果您的日期值是 VARCHAR 或完全填充定义的 CHAR 长度,SQL Server 将看到:

CAST('2013-10-1823:59:00' as datetime)

这不是有效的日期时间。

于 2013-10-19T01:36:41.610 回答