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 預產日期

返回結果如圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM