使用CONVERT(DATE,column)添加计算列时出现“验证公式时出错”

时间:2013-03-29 21:38:08

标签: sql sql-server ssms calculated-columns

我正在尝试通过SSMS将计算列添加到表中 - 我更愿意不了解基本列为VARCHAR(10)而不是DATE的原因的详细信息,我对改变它不感兴趣。

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

  

验证列charDobTyped的公式时出错。

使用公式[charDob]“按预期工作”,意味着列正确绑定。此外,公式CONVERT(DATE, '2001')“按预期工作” - 因此使用导致错误的列会有所作为。

原始列是VARCHAR(10)并包含NULL值值,否则这些值可转换为DATE。查询SELECT CONVERT(DATE,charDob) as dob FROM people按预期工作。此外,错误消息是关于“无效的公式”,而不是关于数据转换错误,所以我不认为这是不可逆转的。

我已经使用新的计算列和虚拟值保存了表并重新连接到数据库 - 这是为了确保没有发生奇怪的缓存问题,因为有时会发生。错误持续存在,与持久标志无关 - 如果只是那么容易关闭。

1 个答案:

答案 0 :(得分:4)

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

ALTER TABLE dbo.whatever ADD newcolumn AS (CONVERT(DATE, CharDob));

以下是具体的错误:

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

此上下文中的“下一个版本”肯定是SQL Server 2012,因此如果您使用的是2008或2008 R2 SSMS(为什么?),该修复程序将不适用于您。