gpt4 book ai didi

sql - 运行原始 SQL 时将数据类型 varchar 转换为 datetime 时出错,但在 LINQ to SQL 调用时则不然

转载 作者:行者123 更新时间:2023-12-04 22:26:11 25 4
gpt4 key购买 nike

客户端在运行我的代码时出错。他们从探查器向我发送了 SQL。

当我将它粘贴到 SQL Server Management Studio 时,它失败了:将数据类型 varchar 转换为日期时间时出错

但是,当我在本地开发箱或其他客户端生产服务器上运行它时,它不会失败。

为了测试,我创建了一个带有 L2S 数据上下文的简单应用程序,其中包含一个类似于以下内容的实体:

public class UserAccount 
{
public int Id { get; set; }
public string Username { get; set; }
public DateTime? LastActivity { get; set; }
}

插入一条记录,然后更新它:
var account = db.UserAccounts.Single(a => a.Username == "Mojo");
account.LastActivity = DateTime.Now;
db.SubmitChanges();

记录在数据库中得到更新。但是当我从 Profiler 获取 T-SQL 时:
exec sp_executesql N'UPDATE [UserAccount] SET [LastActivity] = @p2 WHERE ([Id] = @p0) AND ([Username] = @p1) AND ([LastActivity] IS NULL)',N'@p0 int,@p1 nvarchar(4),@p2 datetime',@p0=1,@p1=N'Mojo',@p2='2009-11-10 14:04:41.7470000' 

并在 SQL Server Management Studio 中执行它我得到: 将数据类型 varchar 转换为日期时间时出错

我错过了什么?

最佳答案

问题在于日期末尾的额外零:

'2009-11-10 14:04:41.747' (works)
'2009-11-10 14:04:41.7470000' (error converting...)

四个额外的零可能只是在 Visual Studio 调试器中可见。 LINQ 不会将它们发送到 SQL Server。

关于sql - 运行原始 SQL 时将数据类型 varchar 转换为 datetime 时出错,但在 LINQ to SQL 调用时则不然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1706210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com