04/06/2007, 13:35
|
| Colaborador | | Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 20 años, 1 mes Puntos: 38 | |
Re: operaciones con fechas días hábiles Elegiste una estructura que favorece a la vista pero no al manejo de la informacion, en este caso, el cálculo de los dias hábiles.
Pero bueno, de cualquier forma te dejo una funcion que espero te sea de utilidad... Saludos
Código:
-- =============================================
-- Generate Test Info
-- =============================================
Create table tmpRangosFechas (id int identity(1,1), descripcion varchar(20), FechaI datetime, FechaF datetime)
Insert into tmpRangosFechas(descripcion, FechaI, FechaF) Values ('Carnavales','20060227','20060228')
Insert into tmpRangosFechas(descripcion, FechaI, FechaF) Values ('Carnavales2','20060410','20060419')
-- =============================================
-- Create scalar function (FN)
-- =============================================
IF EXISTS (SELECT * FROM sysobjects WHERE name = N'fnQtyDays')
DROP FUNCTION fnQtyDays
GO
CREATE FUNCTION dbo.fnQtyDays(
@pFechaI datetime
,@pFechaF datetime)
RETURNS int
AS
BEGIN
Declare @Cuenta int
,@dtFechaI datetime
,@dtFechaF datetime
Declare @tblRangos Table (ValFecha datetime)
Set @dtFechaI = convert(datetime, convert(varchar, @pFechaI, 112))
Set @dtFechaF = convert(datetime, convert(varchar, @pFechaF, 112))
While @dtFechaI <= @dtFechaF
Begin
Insert into @tblRangos (ValFecha) Values (@dtFechaI)
Set @dtFechaI = dateadd(d, 1, @dtFechaI)
End
Select @Cuenta = count(*) - 1
From @tblRangos r
Left outer join
tmpRangosFechas f (nolock)
On r.ValFecha between f.FechaI and f.FechaF
Where f.FechaI is null
return isnull(@Cuenta,0)
END
GO
-- =============================================
-- Example to execute function
-- =============================================
SELECT dbo.fnQtyDays('20060226', '20060301') DiasHabiles
-- DiasHabiles
-- -----------
-- 1
GO
SELECT dbo.fnQtyDays('20070226', '20070301') DiasHabiles
-- DiasHabiles
-- -----------
-- 3
GO
__________________ La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications. |