Haz de este codigo una funcion, pruebalo y haz los cambios que necesites:
Código SQL:
Ver originalDECLARE @fch_ini datetime, @fch_fin datetime
DECLARE @diasDif SMALLINT, @dias31 tinyint
SELECT @fch_ini = '20100302', @fch_fin = '20100630'
SELECT @diasDif = datediff(d, LEFT(CONVERT(VARCHAR,@fch_ini,112),6) + '01',@fch_ini)
DECLARE @meses31 TABLE(mes tinyint)
INSERT INTO @meses31
SELECT 1 UNION
SELECT 3 UNION
SELECT 5 UNION
SELECT 7 UNION
SELECT 8 UNION
SELECT 10 UNION
SELECT 12
SELECT @dias31 = COUNT(1)
FROM @meses31
WHERE mes BETWEEN MONTH(@fch_ini) AND MONTH(@fch_fin)
SELECT datediff(d,@fch_ini, @fch_fin) - @dias31 + @diasDif
Suerte!