添加带有CONVERT(DATE,column)的Compute Column时出现“错误验证公式”

3 sql sql-server ssms calculated-columns

我正在尝试通过SSMS将计算列添加到表中-我宁愿不要深入了解为什么基列是a VARCHAR(10)和not a DATE和no,我对更改它不感兴趣。

当我CONVERT(DATE, [charDob])在表格设计器中输入公式时,SSMS报告:

验证column的公式时出错charDobTyped

[charDob]按预期使用公式“工程”,这意味着该列已正确绑定。公式CONVERT(DATE, '2001')“ 公式”也可以按预期工作-因此使用导致错误的列会引起某些问题。

原始列为a VARCHAR(10),包含NULL值可转换为的值DATE。该查询SELECT CONVERT(DATE,charDob) as dob FROM people按预期方式工作。另外,错误消息是关于“无效公式”的,而不是关于数据转换错误的,所以我不认为不可转换会导致这种情况。

我已经用新的计算列和一个虚拟值保存了该表,并重新连接到数据库-这是为了确保不会发生有时会发生的奇怪的缓存问题。该错误的持久性与持久性标志无关-如果只是很容易将其关闭。

Aar*_*and 5

Management Studio不是执行大多数DDL的最佳方法。请打开一个新的查询窗口并使用:

ALTER TABLE dbo.whatever ADD newcolumn AS (CONVERT(DATE, CharDob));
Run Code Online (Sandbox Code Playgroud)

这是具体的错误:

http://connect.microsoft.com/SQLServer/feedback/details/291134/katmai-table-designer-cant-validate-computed-column-formula

在这种情况下,“下一版本”无疑是SQL Server 2012,因此,如果您使用的是2008或2008 R2 SSMS(为什么?),则该修复程序将不适用于您。

  • SQL Server 2016(针对SQL 12.0.4100.1的SSMS 13.0.16106.4)。这仍然是一个错误。一个烦人的。我无法重新排列列,因为SSMS表示即使我使用T-SQL添加了公式也无法对其进行验证 (2认同)