我正在尝试通过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
按预期工作。此外,错误消息是关于“无效的公式”,而不是关于数据转换错误,所以我不认为这是不可逆转的。
我已经使用新的计算列和虚拟值保存了表并重新连接到数据库 - 这是为了确保没有发生奇怪的缓存问题,因为有时会发生。错误持续存在,与持久标志无关 - 如果只是那么容易关闭。
答案 0 :(得分:4)
Management Studio不是执行大多数DDL的最佳方式。请打开一个新的查询窗口并使用:
ALTER TABLE dbo.whatever ADD newcolumn AS (CONVERT(DATE, CharDob));
以下是具体的错误:
此上下文中的“下一个版本”肯定是SQL Server 2012,因此如果您使用的是2008或2008 R2 SSMS(为什么?),该修复程序将不适用于您。