1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| declare @j decimal,
@m int,
@a int,
@nbjour int
declare @datedeb smalldatetime,
@datefin smalldatetime,
@nbmois decimal
set @datedeb ='02/01/2005'
set @datefin = '15/03/2006'
set @j = datepart(day, @datefin) - datepart(day, @datedeb)
set @m = datepart(month, @datefin) - datepart(month, @datedeb)
set @a = (datepart(year, @datefin) - datepart(year, @datedeb)) * 12
if exists (select 1 where datepart(month, @datefin) in (4, 6, 9, 11))
set @nbjour = 30
else if exists (select 1 where datepart(month, @datefin) in (3, 5, 7, 8, 10, 12))
set @nbjour = 31
else if datepart(month, @datefin) = 2
begin
if datepart(year, @datefin) % 4 = 0
set @nbjour = 29
else
set @nbjour = 28
end
set @nbmois = cast(round(@a + @m + (@j/@nbjour), 2) as decimal)
select retour1 = @nbmois, retour2 = round(@a + @m + (@j/@nbjour), 2) |
Partager