繁体   English   中英

将数据类型nvarchar转换为datetime时出错

[英]Error converting data type nvarchar to datetime

使用Vb.net/SQL Server 2000通过gridview / sqldatasource更新行

存储过程:

@ISTag varchar(10),
@PCISTag varchar(10),
@User varchar(50),
@Date_Start datetime,
@Date_End datetime,
@Status varchar(50),
@Cost money,
@Notes varchar(500),
@CreatedBy varchar(50),
@ModifiedBy varchar(50)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    EXEC sp_changeLog 'HardDrive', @ISTag, @ModifiedBy

    UPDATE T_HardDrive
        SET PCIStag = @PCISTag,
            [User] = @User,
            Date_Start = @Date_Start,
            Date_End = @Date_End,
            Status = @Status,
            Cost = @Cost,
            Notes = @Notes,
        ModifiedBy = @ModifiedBy
        WHERE ISTag = @ISTag

在将参数传递给sp之前,请确保其格式正确。

e.NewValues("Date_Start") = Convert.ToDateTime(e.NewValues("Date_Start"))

我不知道还有什么地方会搞砸。 我希望能够将它保持为空值(如果已经是一个值),我只是想让它现在可以接受任何东西,这就是我的目的。

使用DateTime.TryParse将您的字符串转换为日期。 否则,您会遇到日期本地化问题,即人们在DMY或MDY或YMD等中键入日期。

要找出探针,请将其作为varchar(n)参数传递给datetime值,然后在该过程中使用ISDATE(Transact-SQL)进行检查以查看其是否有效,甚至将错误的值记录到日志中。 一旦看到不良价值,您的问题/解决方案就会更加明显。

由于某种原因,参数设置为“字符串”。 正确设置为:

<asp:Parameter Name="Date_Start" Type="DateTime" />

我收到时间超出范围的错误,但至少现在将其视为DateTime。

尝试使用

Convert.ToDateTime(e.NewValues("Date_Start"))

根据使用格式提供程序

http://msdn.microsoft.com/zh-CN/library/9xk1h71t.aspx

或在e.NewValues(“ Date_Start”)上放置一个断点,然后查看到底传递给SQL的内容(或使用SQL Profiler进行相同的操作)。

如果您可以发布将传递给SP的内容,则可能会更清楚地知道问题是什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM