2017-01-22 29 views
0

私は '会議'テーブルを作成し、EndDateをStartDate + ConferenceDaysとして設定したいと考えています。それを行う方法はありますか? SQL ServerのSQL Server - 計算された日付列

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, 
) 
+0

3つの合計である新しい列が必要ですか? –

+0

どのDBMSを使用していますか? Postgres?オラクル? DB2?ファイアバード? –

+0

@ YashveerSingh StartDateが2016-01-01でC​​onferenceDaysが4の場合、EndDateを2016-01-05にします。 –

答えて

3

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 
) 
+0

ありがとうございます!それは完全に動作します。私は 'dateadd'と似ているが、 'Deafult'や 'Check'と似ているが、ここでは 'AS'でなければならない。 :)ありがとう、もう一度:) –

+0

@EuroPe:うまくいきました:うれしいコーディング –

+0

あなたの答えに 'persisted'が意味するものを説明してください –

0

私はこの少し再考をお勧めします。 EndDateが常にStartDate + ConferenceDaysの場合、本質的に冗長なデータがあり、これは正規化ルールに違反しているとみなすことができます。

あなたはORMを使用しているか、データテーブルを表し、いくつかのクラスを定義した場合、私はこのようなプロパティを追加することをお勧め:

partial class Conference { 

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

はあなたのためにこの作品はウィル?

+0

EndDateを別のDB列にすると、ソートが必要な場合に便利ですEndDateで指定するか、WHERE句で使用します。 – andrews