[MSSQL]求出两个时间段的间隔的小时和分钟余数

求出两个时间段的间隔的小时和分钟余数

Create Procedure GetIntHourMinutes
@Cards1      Varchar(500),         --刷卡前的时间
@Cards2      Varchar(500),         --刷卡后的时间
@GapHour     Varchar(500) Output,  --算出两个时间的间隔小时
@GapMinutes  Varchar(500) OutPut   --算出两个时间的分钟余数
As
Declare @Hour1 Varchar(500),@Min1 Varchar(500)             --定义上班的小时,上班的分钟
Declare @Hour2 Varchar(500),@Min2 Varchar(500)             --定义下班的小时,下班的分钟
Declare @Minutes1 Varchar(500),@Minutes2 Varchar(500)      --定义上班刷卡的分钟数,下班刷卡的分钟数
Declare @AllMinutes  Varchar(500),@Hour Varchar(500),@Minutes Varchar(500)  --定义上班的总共分钟数,上班的总小时,上班的分钟余

数
Execute SetHourMinutes @Cards1,@Hour1 Output,@Min1 Output  --取出上班的小时,上班的分钟
Execute SetHourMinutes @Cards2,@Hour2 Output,@Min2 OutPut  --取出下班的小时,下班的分钟
if cast(@Hour2 as int) < cast(@Hour1 as int)               --下班的小时如果小于上班的小时,是在深夜的情况
   Set @Hour2 = @Hour2 + 24    
Select @Minutes1 = @Hour1 * 60 + @Min1,@Minutes2 = @Hour2 * 60 + @Min2  --算出上班刷卡的分钟数,下班刷卡的分钟数
Select @AllMinutes = cast(@Minutes2 as int) - cast(@Minutes1 as int)    --算出上班的总分钟数
Select @Hour = @AllMinutes / 60                                         --算出总共上多少个小时
Select @Minutes = @AllMinutes % 60                                      --算出两个时间的分钟余数
Select @GapHour = @Hour,@GapMinutes = @Minutes 


调用上面的存储过程
Declare @Back1   Varchar(500)
Declare @Back2   Varchar(500)
Declare @Hour    Varchar(500)
Declare @Minutes Varchar(500)
Select @Back1 = '23:00',@Back2 = '2:59'
Execute GetIntHourMinutes @Back1,@Back2,@Hour OutPut,@Minutes Output
Select @Hour,@Minutes   


 

你可能感兴趣的:(存储,output)