【发布时间】:2014-10-14 13:15:31
【问题描述】:
我有一个表RpParams,其中的列名为ParamName 和ParamValue。它们都是varchar(200) 类型。
本月早些时候,一个存储过程开始失败。
我把范围缩小到了
SELECT
ParamName,
ParamValue =
CASE
WHEN ISDATE(ParamValue) = 1
THEN CAST(CAST(RTRIM(LTRIM(ParamValue) AS DATETIME) AS VARCHAR(50))
ELSE ParamValue
END
...
当ParamValue 中的值达到 1753 或更大时,问题就出现了。我知道 1753 - 9999 被视为有效日期,因此 ISDATE 现在返回 1 并将 1753 值转换为日期。
如何验证该字段但避免我遇到的 >=1753 问题?
这是在 SQL Server 2005 上
【问题讨论】:
标签: sql sql-server tsql sql-server-2005