SQL Server - 计算日期列

时间:2017-01-22 19:00:10

标签: sql sql-server calculated-columns create-table

我想创建会议'表并将EndDate设置为StartDate + ConferenceDays。有什么方法可以做到吗?

create table Conferences(
    ConferenceID int not null primary key,
    ConferenceName varchar(50) not null,
    ConferenceDays int not null,
    StartDate date not null,
    EndDate date not null,
)

2 个答案:

答案 0 :(得分:3)

对于SQL服务器:

create table Conferences(
    ConferenceID int not null primary key,
    ConferenceName varchar(50) not null,
    ConferenceDays int not null,
    StartDate date not null,
    EndDate AS (dateadd(day,ConferenceDays, StartDate)) PERSISTED
)

答案 1 :(得分:0)

我建议稍微重新思考一下。如果EndDate始终是StartDate + ConferenceDays,那么您基本上拥有冗余数据,这可能被视为违反规范化规则。

如果您正在使用ORM或者您已经定义了一些代表数据表的类,那么我建议添加如下属性:

partial class Conference {

   DateTime EndDate { get { return this.StartDate.AddDays( this.ConferenceDays ); } }
   ... etc.
}

这对你有用吗?