需要在SQL中计算最终日期

问题描述

Date Table

大家好,

在表中,我有完成日期(2020-01-28),我想使用CompletedDate列+ PeriodDays,PeriodsMonths和PeriodsYears列中的任何数据来计算最终日期(renewaldate)。例如,PeriodYears表中的完成日期(2020-01-28)+ 1年。 renewalDate将是2021-01-28。任何帮助将不胜感激

这是我的查询 SELECT hes.CompletedDate,eve.PeriodDays,eve.PeriodMonths,eve.PeriodYears,FROM dbo.EventScheduled hes LEFT JOIN requiredEvents eve ON hes.ID = eve.ID

解决方法

这将取决于您使用的RDBMS,因为您需要使用日期函数。对于许多RDBMS,

update tablename set RenewalDate = dateadd(coalesce(day,0),PeriodDays
          dateadd(coalesce(month,PeriodsMonths
            dateadd(coalesce(year,PeriodsYears,CompletedDate)));
    
 

将起作用。将“ tablename”替换为实际的表。首先,您必须添加新列:alter table tablename添加列RenewalDate日期,

,

使用CASE表达式选择要添加的正确间隔类型:

<MultipleChoiceType
            replaceVariables={value=>this.replaceVariables(value)}
            choices={solution[0].choices}
            playerAnswer={this.state.myAnswerPartData?.answers[0]}
            selectedChoiceChanged={(choiceIndex) => 
            this.onChangedMyMultipleChoise(solution[0].choices[choiceIndex],solutionIndex)}
            edit={false} />