0

我意识到这是围绕论坛的一个相当普遍的问题,但我不知道我在这里做错了什么。

我有一个“当前”表,例如:

ID(uniqueidentifier)
Name(nvarchar max)
FileName(nvarchar max)
FileVersion(smallint)
CurrentVersionDate(datetime)

CurrentVersionDate 是使用 SQLserver 中的 GETDATE() 函数输入的。

当用户在我的网站上点击“创建文件”时,该表的详细信息将传输到“历史”表中。因此,我使用存储过程从“当前”中选择 * 详细信息并将每个值保存为变量(我在 Visual Studio 项目中使用 vb.net)。我将显示日期变量,因为这是问题所在。我将其保存为“日期”变量:

Dim dDate as Date
dDate = dr("CurrentVersionDate")

然后我将这些变量发送到另一个存储过程以输入“历史”表:

Execute sp_InsertHistory '" & ID & "','" & strName& "','" & strFile & "','" & intVersion & "','" & dDate & "'"

我将存储过程中的日期变量声明为:

@Date datetime,

使用插入语句:

INSERT INTO History
(ID, Name, FileName, FileVersion, VersionDate)
VALUES
(@ID, @Name, @FileName, @FileVersion, @Date)

“历史”表与“当前”表具有相同的设置。单步执行代码,发现此错误:

Error converting data type varchar to datetime

当然变量不是varchar?即使是这样,该字符串肯定是 SQLserver 的正确格式,因为我只是选择 SQL 给出的日期值!有什么想法吗?

4

2 回答 2

0

该字符串肯定是 SQLserver 的正确格式

你怎么知道?为了安全起见,我会以明确的格式使用字符串:YYYY-MM-DDTHH:MM:SS,例如2013-05-13T01:01:00.

于 2013-05-13T09:02:43.007 回答
0

由于您将日期放在引号之间,因此是 varchar '" & dDate & "'",但我认为您在转换时遇到的问题可能是您正在以本地格式检索日期,并且您必须以他自己的格式在 SQL Server 中插入日期.

尝试以这种格式将日期作为字符串插入:dDate.ToString("MM/dd/yyyy HH:mm:ss")

于 2013-05-13T09:03:13.523 回答