Respuesta: Calcular periodo que abarca un numero de semana Hola yo tenia el mismo problema y la verdad es que no encontre ayuda en ningun, foro asi que cree esta funcion espero que les sirva a las proximas personas con el mismo problema.
para SQL Server
CREATE FUNCTION fn_ObtenerPeriodoSemana(@Anio AS INT, @SemanaNum AS INT)
RETURNS VARCHAR(100)
AS
/***************************** ENCABEZADO ************************************
************************************************** ****************************
** NOMBRE: fn_ObtenerPeriodoSemana **
** DESCRIPCION: Retorna el periodo en fecha al que corresponde el numero de **
** semana segun el anio **
** CREADOR:Eddy_Neo **
********************* REGISTRO DE MODIFICACIONES *****************************
************************************************** ****************************
Fecha Descripcion
-----------------------------------------------------------------------------
2008.Oct.17 Creación de la función
************************************************** ***************************/
BEGIN
DECLARE @PeriodoDescripcion AS VARCHAR(100)
DECLARE @SemenaFecha AS DATETIME
SET @SemenaFecha = CONVERT(DATETIME, CAST(@Anio AS VARCHAR(4))+'-01-01')
IF(DATENAME(dw, @SemenaFecha) = 'Sunday')
BEGIN
SELECT @PeriodoDescripcion = CONVERT(VARCHAR(100), (DATEADD(d, -7, DATEADD(ww, @SemanaNum, @SemenaFecha))), 103) + ' al ' + CONVERT(VARCHAR(100), (DATEADD(d, -1, DATEADD(ww, @SemanaNum, @SemenaFecha))), 103)
END
IF(DATENAME(dw, @SemenaFecha) = 'Monday')
BEGIN
SELECT @PeriodoDescripcion = CONVERT(VARCHAR(100), (DATEADD(d, -8, DATEADD(ww, @SemanaNum, @SemenaFecha))), 103) + ' al ' + CONVERT(VARCHAR(100), (DATEADD(d, -2, DATEADD(ww, @SemanaNum, @SemenaFecha))), 103)
END
IF(DATENAME(dw, @SemenaFecha) = 'Tuesday')
BEGIN
SELECT @PeriodoDescripcion = CONVERT(VARCHAR(100), (DATEADD(d, -9, DATEADD(ww, @SemanaNum, @SemenaFecha))), 103) + ' al ' + CONVERT(VARCHAR(100), (DATEADD(d, -3, DATEADD(ww, @SemanaNum, @SemenaFecha))), 103)
END
IF(DATENAME(dw, @SemenaFecha) = 'Wednesday')
BEGIN
SELECT @PeriodoDescripcion = CONVERT(VARCHAR(100), (DATEADD(d, -10, DATEADD(ww, @SemanaNum, @SemenaFecha))), 103) + ' al ' + CONVERT(VARCHAR(100), (DATEADD(d, -4, DATEADD(ww, @SemanaNum, @SemenaFecha))), 103)
END
IF(DATENAME(dw, @SemenaFecha) = 'Thursday')
BEGIN
SELECT @PeriodoDescripcion = CONVERT(VARCHAR(100), (DATEADD(d, -11, DATEADD(ww, @SemanaNum, @SemenaFecha))), 103) + ' al ' + CONVERT(VARCHAR(100), (DATEADD(d, -5, DATEADD(ww, @SemanaNum, @SemenaFecha))), 103)
END
IF(DATENAME(dw, @SemenaFecha) = 'Friday')
BEGIN
SELECT @PeriodoDescripcion = CONVERT(VARCHAR(100), (DATEADD(d, -12, DATEADD(ww, @SemanaNum, @SemenaFecha))), 103) + ' al ' + CONVERT(VARCHAR(100), (DATEADD(d, -6, DATEADD(ww, @SemanaNum, @SemenaFecha))), 103)
END
IF(DATENAME(dw, @SemenaFecha) = 'Saturday')
BEGIN
SELECT @PeriodoDescripcion = CONVERT(VARCHAR(100), (DATEADD(d, -13, DATEADD(ww, @SemanaNum, @SemenaFecha))), 103) + ' al ' + CONVERT(VARCHAR(100), (DATEADD(d, -7, DATEADD(ww, @SemanaNum, @SemenaFecha))), 103)
END
RETURN @PeriodoDescripcion
END |