Hola, quiero listar un rango de fechas pero por dia de semana, numero de semana y año, use el siguiente codigo, resulta pero queria ver si hay otra manera de realizar lo mismo, si no entienden lo que quiero me consultan, gracias 2004351 = año 2004, semana 35, dia 1 que significaria al 23/08/04 SET DATEFIRST 1 SELECT * FROM FechasMinLab where CAST(cast(year(Fech_fecha) as varchar(20)) + RIGHT( '00' + CAST(DATEPART(wk, Fech_fecha) as varchar(20)),2) + cast(DATEPART(dw, Fech_fecha) as varchar(20)) AS NUMERIC(20,0)) >=2004351 and CAST(cast(year(Fech_fecha) as varchar(20)) + RIGHT( '00' + CAST(DATEPART(wk, Fech_fecha) as varchar(20)),2) + cast(DATEPART(dw, Fech_fecha) as varchar(20)) AS NUMERIC(20,0)) <=2005045
Segun yo veo, otra opción podrÃa ser transformar los valores de entrada en lugar de todos los registros de la tabla FechasMinLab. Además, como la columna Fech_fecha forma parte de un Ãndice, estas anulando su uso al transformar el campo con las funciones datepart cast etc. Te mando un ejemplo que retornarÃa las mismas fechas que el de tu Post. Saludos Set DateFirst 1 Declare @cDesde char(7) Declare @nAñoDesde int Declare @nSemanaDesde int Declare @nDiaDesde int Declare @cHasta char(7) Declare @nAñoHasta int Declare @nSemanaHasta int Declare @nDiaHasta int Declare @dDesde datetime Declare @dHasta datetime Set @cDesde = '2004351' Set @cHasta = '2005045' Set @nAñoDesde = substring(@cDesde,1,4) set@nSemanaDesde = substring(@cDesde,5,2) set@nDiaDesde = substring(@cDesde,7,1) Set @nAñoHasta = substring(@cHasta,1,4) set@nSemanaHasta = substring(@cHasta,5,2) set@nDiaHasta = substring(@cHasta,7,1) Set@dDesde = DateAdd(dayofyear, ( @nSemanaDesde - 1) * 7 - (datepart(dw,'01/01/'+ str(@nAñoDesde))- @nDiaDesde ) , '01/01/'+ str(@nAñoDesde) ) Set@dHasta = DateAdd(dayofyear, ( @nSemanaHasta - 1) * 7 - (datepart(dw,'01/01/'+ str(@nAñoHasta))- @nDiaHasta ) , '01/01/'+ str(@nAñoHasta) ) select @dDesde ,@dHasta Select * From FechasMinLab where Fech_fecha >= @dDesde And Fech_fecha <= @dHasta