【发布时间】:2013-07-31 01:46:38
【问题描述】:
我有一个现有的表,我想添加一个计算列
[dbo].[Route]
...
[EstimatedArrival] TIME (7) NOT NULL,
[DriveSeconds] INT NOT NULL,
[WaitSeconds] INT NOT NULL,
...
但是当我尝试在下面添加TIME 的计算列时
ALTER TABLE [dbo].[Route]
ADD [EstimatedDeparture] AS
CONVERT (TIME (7), DATEADD(SECOND,
(((DATEPART(HOUR, [EstimatedArrival]) * 3600)
+ (DATEPART(MINUTE, [EstimatedArrival]) * 60)
+ DATEPART(SECOND, [EstimatedArrival]))
- [DriveSeconds] - [WaitSeconds]), ''), 114)
PERSISTED;
它抛出
表“Route”中的计算列“EstimatedDeparture”无法持久化,因为该列是不确定的。
为什么?我认为CONVERT(TIME (7) ...) 应该保证列类型为TIME
请注意,如果我在查询中使用此 Convert 表达式,它可以正常工作。 我该如何解决这个问题?
【问题讨论】:
-
@HABO 事实证明,is 里面有一个字符串格式(注意
''),而 114 似乎与问题。
标签: sql sql-server tsql calculated-columns