2017-01-22 9 views
0

'회의'테이블을 만들고 EndDate를 StartDate + ConferenceDays로 설정하려고합니다. 어떤 방법으로 그렇게 할 수 있습니까? SQL 서버의 경우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

세 개의 합계 인 새로운 열을 원하십니까? –

+0

어떤 DBMS를 사용하고 있습니까? 포스트그레스? 신탁? DB2? 파이어 버드? –

+0

@YashveerSingh StartDate가 2016-01-01이고 ConferenceDays가 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

답변에 '지속 된'의미가 무엇인지 설명해야합니다. –

0

나는이 조금 다시 생각하는 것이 좋습니다. EndDate가 항상 StartDate + ConferenceDays 인 경우 본질적으로 중복 데이터가 있으며 이는 정규화 규칙 위반으로 간주 될 수 있습니다.

당신은 ORM을 사용하는 경우 또는 당신은 그 때 나는이 같은 속성 추가 제안, 데이터 테이블을 나타내는 몇 가지 클래스를 정의했습니다 :

partial class Conference { 

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

을 윌 당신을 위해이 일?

+0

EndDate를 별도의 DB 열로 사용하면 정렬이 필요할 때 유용합니다. EndDate에 의해 또는 WHERE 절에서 사용하십시오. – andrews