Listar fechas por semanas | SQL Server Performance Forums

SQL Server Performance Forum – Threads Archive

Listar fechas por semanas

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)
[email protected] = substring(@cDesde,5,2)
[email protected] = substring(@cDesde,7,1) Set @nAñoHasta = substring(@cHasta,1,4)
[email protected] = substring(@cHasta,5,2)
[email protected] = substring(@cHasta,7,1) [email protected] = DateAdd(dayofyear, ( @nSemanaDesde – 1) * 7 – (datepart(dw,’01/01/’+ str(@nAñoDesde))- @nDiaDesde ) , ’01/01/’+ str(@nAñoDesde) )
[email protected] = 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
Ok, muchas gracias
]]>