我這邊有一個業務,根據某個指定日期,推算某個患者的預產日期
原理:比如孕產的預產日期的算法(預產日期 = 末次月經日期+ 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 預產日期
返回結果如圖: