4

我正在尝试通过 SSMS 将计算列添加到表中 - 我宁愿不要详细了解为什么基列是 aVARCHAR(10)而不是 aDATE和不,我对更改它不感兴趣。

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

验证列的公式时出错charDobTyped

按预期使用公式[charDob]“有效”,这意味着该列已正确绑定。公式也CONVERT(DATE, '2001')按预期“有效” - 因此使用导致错误的列存在一些问题。

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

我已经用新的计算列和一个虚拟值保存了表并重新连接到数据库——这是为了确保不会发生奇怪的缓存问题,就像有时会发生的那样。该错误独立于持久化标志而持续存在——如果它很容易关闭就好了。

4

1 回答 1

8

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

"Next release" in this context is most certainly SQL Server 2012, so if you are using 2008 or 2008 R2 SSMS (why?), the fix won't apply to you.

于 2013-03-29T21:45:07.663 回答