【发布时间】:2019-11-28 10:08:12
【问题描述】:
我有一个如下所示的 SQL 查询:
select LAST_UPDATED from Employees WHERE (CAST(LAST_UPDATED AS smalldatetime)) > (CAST('@updateTime' AS smalldatetime))
command.Parameters.AddWithValue("updateTime", updatedTime);
我解决了这里提出的几个相关问题以及this page,但没有一个可以解决我的问题。
我还尝试了 ISO-8601 格式 用于日期 (YYYYMMDD),这在此处似乎也不起作用。
SQL server 中 LAST_UPDATED 列的数据类型为 DATE。
问题是这样在开发机器和SQL管理工作室中运行良好,但在测试服务器中抛出以下错误:
将 nvarchar 数据类型转换为 smalldatetime 数据类型导致值超出范围
SQL 管理工作室查询:
select LAST_UPDATED from Employees WHERE (CAST(LAST_UPDATED AS smalldatetime)) > (CAST('2014-08-10 ' AS smalldatetime))
如果有人能对此有所了解,那将非常有帮助。
【问题讨论】:
-
您是否将变量名写成文字而不是实际变量?
-
您正在尝试将字符串
'@updateTime'转换为 smalldatetime - 而不是@updateTime变量的值。 -
我建议使用
Parameters.Add代替AddWithValue并在C# 代码中定义输入参数的数据类型。 -
您能否包括如何在 C# 中为变量
updatedTime赋值?可能是某些日期相关的操作系统设置格式化了导致 SQL Server 在转换时失败的日期。 -
@EzLo : 多亏了你,
updatedTime的分配方式出了问题!
标签: c# sql sql-server