我这边有一个业务,根据某个指定日期,推算某个患者的预产日期
原理:比如孕产的预产日期的算法(预产日期 = 末次月经日期+ 10月+8天)
那么我们怎么通过存储过程来实现呢?
首先分析条件
需要一个指定日期、月数、天数,返回一个预产日期
那么参数就有这些
@SearchDate varchar(20), @MonthNum int, @DayNum int, @ProductDate varchar(20) output
实例如下:
/*********************************************** 获取指定月数和天数后的预产日期 条件:末次月经日期、月数、天数 返回:预产日期 备注:根据末次月经日期推算预产日期 Date:2017-09-29 Author:xzl ***********************************************/ ALTER proc [dbo].[sp_GetPreProductDate] @SearchDate varchar(20), @MonthNum int, @DayNum int, @ProductDate varchar(20) output as begin --获取当前时间的日期 --select DATEADD(MONTH,0,GETDATE()) --根据月数和天数返回一个预产日期 --1)返回一个指定月数的日期 --select DATEADD(MONTH,@MonthNum,GETDATE()) --2)将上面的日期再加上指定天数 --select DATEADD(MONTH,@MonthNum,GETDATE())+ @DayNum --3)根据指定日期、月数、天数推算出预产日期 --select (DATEADD(MONTH,@MonthNum,@SearchDate)+ @DayNum) --4) 进行转换预产日期(120:代表输出类型:yyyy-MM-dd HH:mm:ss) set @ProductDate = Convert(varchar(20),(DATEADD(MONTH,@MonthNum,@SearchDate)+ @DayNum),120) end
存储过程调用:
--声明变量-- declare @SearchDate varchar(20) declare @MonthNum int declare @DayNum int declare @ProductDate varchar(20) --参数赋值-- set @SearchDate='2017-06-12' set @MonthNum =10 set @DayNum =8 --执行存储过程(得到预产日期) exec sp_GetPreProductDate @SearchDate,@MonthNum,@DayNum,@ProductDate output select @ProductDate as 预产日期
返回结果如图: