Bueno os paso mi SP para determinar la cantidad de festivos entre dos
fecha (sin contar los fines de semana)
Nos hace falta una tabla auxiliar
CREATE TABLE [dbo].[festivos] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[fecha] [smalldatetime] NOT NULL ,
[descripcion] [varchar] (50) NULL ,
[provincia] [varchar] (50) NULL ,
[localidad] [varchar] (50) NULL
) ON [PRIMARY]
GO
El SP es el siguiente
/************************************************************************
**************/ /* Stored Procedure: sp_sift_festivos
*/ /* Creation Date: 05/02/2004 */
/* Copyright: Telsi S.A. */
/* Written by: Emilio Garcia Loeda */
/* */
/* Purpose: Actualizar los componentes */
/* */
/* Input Parameters: @strProvincia, provincia donde se ejecuta el SP
*/ /* Input Parameters: @strLocalidad, localidad donde se
ejecuta el SP */ /* Input Parameters: @strDesde, Fecha
inicial */ /* Input Parameters: @strHasta,
fecha FInal */ /* */
/* Output Parameters: @intDias, nº de dias festivos (sin fines semana)
*/ /* */
/* Return Status: Produción
*/ /* */
/* Usage: exec sp_sift_festivos
'Ourense','Ribadavia','01/01/2003','15/02/2004' */ /*
*/ /* Local Variables:
*/ /* */
/* Called By: .
*/ /* */
/* Calls: */
/* */
/* Data Modifications: Ninguna */
/* */
/* Updates: */
/* Date Author Purpose */
/* 05/02/2004 EGL */
/* */
/************************************************************************
**************/
CREATE procedure sp_sift_festivos
@strProvincia varchar(30),
@strLocalidad varchar(30),
@strDesde datetime,
@strHasta datetime,
@intDias integer output
as
set @strProvincia=ltrim(rtrim(@strProvincia))
set @strLocalidad=ltrim(rtrim(@strLocalidad))
set @strDesde=convert(char,@strDesde,112)
set @strHasta=convert(char,@strHasta,112)
set @intDias=0
select @intDias=count(*) from festivos
where convert(char,fecha,112) BETWEEN @strDesde and @strHasta
and (provincia=@strProvincia and (localidad=@strLocalidad or
localidad is NULL)) and datepart(dw,fecha) not in (6,7)
Post by Emilio Garcia Loeda..., pero sin tener en cuante los fines de semana?
Deseo evitar el uso de cursores para saber la diferencia entre dos
fechas (no vale datediff()) pero teniendo en cuenta los fines de
semana.
He sabido descontar entre dos fechas los festivos, utilizando una
tabla auxiliar (con los festivos), pero quiero evitar este metodo para
los fines de semana.
¿alguien de vosotros ya se ha enfrentado este problema?
¿como se resolvio?
SAludos
Emilio Gª Loeda
www.loeda.net