在SQL Server 2008中创建计算列

26
我有一个 SQL Server 2008 数据库,其中有一个名为“Book”的表格。这个表格有以下属性:
  • ID(整数)
  • Title(nvarchar(256))
  • PublishDate(日期时间)
我需要创建一个名为“AgeInMinutes”的计算列。我不太熟悉计算列,虽然我明白概念,但我不确定如何操作。在 SQL Server Management Studio 中,在“列属性”区域中的“表设计器”部分中,我看到一个称为“(Formula)”的属性。我假设我需要在此处输入我的计算公式。但是,我不确定应该放什么在这里。请问有人可以帮帮我吗?
谢谢!

1
你打算用这个计算列做什么?不要在WHERE子句中使用它,否则会导致全表扫描。 - Martin Smith
2个回答

43

你可以在CREATE TABLE中定义列:

AgeInMinutes as (DATEDIFF(minute, PublishDate, GETDATE())

或者,只需执行以下操作:

ALTER TABLE Book
ADD AgeInMinutes as (DATEDIFF(minute, PublishDate, GETDATE())

4
我认为值得特别强调的是,在 CREATE TABLE 定义中,您不需要指定数据类型。一开始我忽视了这一点。 - hurleystylee
1
你也可以使用PERSISTED关键字指定计算后将其存储,例如AgeInMinutes as (DATEDIFF(minute, PublishDate, GETDATE()) PERSISTED。 - Lord Darth Vader

0

通过SSMS修改计算列。右键单击表格,选择设计,然后单击计算列,然后在列属性中查看,有一个选项,如计算列规范,您可以在那里更改计算列。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接