2013-05-13 54 views
1

計算列錯誤,這些都是列(簡化):SQL服務器:在DATEADD公式

myDate as Date 
theMonths as int 

然後我在Microsoft SQL Server Management Studio中2008 R2創建一個計算列finalDate,這個公式:

(dateadd(month, theMonths, myDate)) 

很簡單。但出現錯誤:

Error validating formula

僅當我通過Management Studio中的集成助手插入公式時纔會出現此錯誤。通過T-SQL查詢創建列時不會發生。

如果我將myDate類型更改爲Datetime,沒有錯誤,但我無法更改表結構。

我試試這個:

(dateadd(month, theMonths, CONVERT(Datetime, myDate))) 

的錯誤仍然存​​在。

我用下面直接創建列在T-SQL:

ADD [finalDate] AS (dateadd(month,[theMonths],[myDate])) PERSISTED 

它工作正常,在創建列時,數據的計算,當插入更新。問題出在Management Studio中。

回答

1

嘗試這一個 -

CREATE TABLE dbo.[test] 
(
    myDate DATE NOT NULL DEFAULT (GETDATE()), 
    theMonths INT NOT NULL DEFAULT ((0)), 
    finalDate AS (DATEADD(MONTH, theMonths, myDate)) PERSISTED 
) 

INSERT INTO dbo.[test] (myDate, theMonths) 
VALUES('20130101', 5) 

SELECT * FROM dbo.[test] 
+0

我運行查詢,它工作正常,創建表和列計算正確。 然後,我轉到SQL Management Studio中的數據庫瀏覽器,選擇該表並使用菜單命令創建一個新列。我嘗試,並保持錯誤(錯誤驗證公式)。 一切都是有用的,但是有一條信息當然是我的老闆所不能接受的。 – Rodrigo 2013-05-13 14:28:16