0

我想创建一个计算列。

我有一个表说表 1,其中有一列称为加入日期。

我想创建一个列,通过减去今天的日期和 [Date of Joining] 列来返回 Months(int) 中的值。

我用这个:(datediff(月,[DateJoining],getdate()))

它工作得很好,但我不知道为什么计算类型列是空类型,即使我将 DateJoining 列设为非空类型

任何帮助都受到高度赞赏。

4

1 回答 1

1

我无法告诉您为什么 SQL Server 会以这种方式运行,我也无法理解它的重要性,除了理解之外(您不会真正理解,因为我不知道这里是否有人可以解释为什么会这样)。我认为对于 int 它可能会防止溢出(即使在这种情况下显然不可能)。

如果您确实希望系统目录为您确认该列不可为空:

ALTER TABLE dbo.whatever ADD column_name 
  AS (ISNULL(datediff(month, DateJoining, getdate()), 0));

注意:这个技巧不适用于COALESCE.

于 2012-08-10T12:53:36.817 回答