declare @LastMenstruation date,@ExpectedDateOfChildbirth date declare @DurationWeeks int,@DurationDays int,@ExpectedWeeks int,@ExpectedDays int,@ExpectedTotalWeeks int declare @Remainder int--余数外加天 declare @AdditionalWeeks int--剩余周 set @ExpectedTotalWeeks=40 set @LastMenstruation='yyyy-MM-dd' set @ExpectedDateOfChildbirth=dateadd(week,@ExpectedTotalWeeks,@LastMenstruation) --year | quarter | month | week | day | hour | minute | second | millisecond set @DurationWeeks=datediff(week,@LastMenstruation,getdate()) set @DurationDays=datediff(day,@LastMenstruation,getdate()) set @ExpectedWeeks=datediff(week,@LastMenstruation,@ExpectedDateOfChildbirth) set @ExpectedDays=datediff(day,@LastMenstruation,@ExpectedDateOfChildbirth) set @Remainder=(@ExpectedDays-@DurationDays)%7 set @AdditionalWeeks=case @Remainder when 0 then (@ExpectedWeeks-@DurationWeeks) else (@ExpectedWeeks-@DurationWeeks)-1 end select @LastMenstruation [末次月经日期],@ExpectedDateOfChildbirth [预产期] ,cast(@ExpectedWeeks as varchar)+N' 周('+cast(@ExpectedDays as varchar)+N' 天)' [预计] ,cast(@DurationWeeks as nvarchar)+N' 周 + '+cast(@DurationDays%7 as varchar)+N' 天('+cast(@DurationDays as varchar)+N' 天)' [持续] ,cast(@AdditionalWeeks as varchar)+N' 周 + '+cast(@Remainder as varchar)+N' 天('+cast((@ExpectedDays-@DurationDays) as varchar)+N'天)' [剩余]