SQL 服务器 - 计算日期列

SQL Server - computed date column

我想创建 'Conferences' 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,
)

对于 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
)

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

如果您使用的是 ORM 或者您已经定义了一些代表数据 table 的 class,那么我建议添加一个 属性,如下所示:

partial class Conference {

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

这对你有用吗?