sql存储过程中,如何根据指定日期、月数、天数推算预产日期

我这边有一个业务,根据某个指定日期,推算某个患者的预产日期

原理:比如孕产的预产日期的算法(预产日期 = 末次月经日期+ 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 预产日期

返回结果如图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值