我有以下从 C# Windows 服务运行的内联 SQL:
UPDATE table_name SET
status_cd = '2',
sdate = CAST('03/28/2011 18:03:40' AS DATETIME),
bat_id = '33acff9b-e2b4-410e-baaf-417656e3c255',
cnt = 1,
attempt_date = CAST('03/28/2011 18:03:40' AS DATETIME)
WHERE id = '1855'
当我从应用程序内针对 SQL Server 数据库运行此命令时,出现以下错误:
System.Data.SqlClient.SqlException:将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。
该语句已终止。
但是,如果我从 SQL Management Studio 中获取该 SQL 片段并运行它,它将毫无问题地运行。
有什么想法可能导致此问题吗?
不明确的日期格式将根据登录语言进行解释。这有效
set dateformat mdy
select CAST('03/28/2011 18:03:40' AS DATETIME)
这不
set dateformat dmy
select CAST('03/28/2011 18:03:40' AS DATETIME)
如果您使用具有正确数据类型的参数化查询,则可以避免这些问题。您还可以使用明确的“不分隔”格式yyyyMMdd hh:mm:ss
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)