
03/02/2006, 12:33
|
 | | | Fecha de Ingreso: septiembre-2005
Mensajes: 23
Antigüedad: 19 años, 5 meses Puntos: 0 | |
Solucion Hola Jose, me tome la libertad de crear un Stored Procedure (SP) que te calcula el dato que quieres, es posiblemente una forma de muchas de hacerlo, solo tienes que darle un copy paste y asi como esta compilarlo en tu query analizer y ya. Lo unico que tienes que hacer es pasarle como parametro la fecha que quieres que te calcule la semana en la que se encuentra.
Una cosa importante, este SP te calcula la semana tomando en cuenta que la semana comienza en domingo y termina en sabado, es por eso que los meses que empiecen en finde smeana, viernes, sabado o domingo, y sean de 31 dias van a ser los que tengan 6 semanas.
Checalo a ver si te sirve, saludos.
Código:
-- Semana_del_Mes 'dec 30 2006'
Create Proc Semana_del_Mes
@Fecha datetime
As
declare @Fecha_Actual datetime,
@Anio int,
@PrimerDia datetime,
@Semana_Anio int,
@Mes_Anio int,
@FechaMesAnt datetime,
@Mes_Ini datetime,
@Mes_Fin datetime,
@Dias_Mes int,
@Semana_Mes int
Set @Fecha_Actual = Convert(datetime, Convert(varchar(12), @Fecha))
Set @Anio = datepart(yy, @Fecha_Actual)
Set @PrimerDia = Convert(datetime, 'jan 1 ' + Convert(varchar(5), @Anio))
Set @Mes_Anio = datepart(m, @Fecha_Actual)
Set @Semana_Anio = datepart(wk, @Fecha_Actual)
Set @Mes_Ini = DateAdd(m, @Mes_Anio-1, @PrimerDia)
Set @Mes_Fin = DateAdd(y, -1, DateAdd(m, @Mes_Anio, @PrimerDia))
Set @Dias_mes = datepart(dd, @Fecha)
Set @Semana_Mes = case when datediff(wk, @Mes_Ini, @Fecha) = 0 and @Dias_Mes <=7 then 1
when datediff(wk, @Mes_Ini, @Fecha) = 1 and @Dias_Mes <=14 then 2
when datediff(wk, @Mes_Ini, @Fecha) = 2 and @Dias_Mes <=21 then 3
when datediff(wk, @Mes_Ini, @Fecha) = 3 and @Dias_Mes <=28 then 4
when datediff(wk, @Mes_Ini, @Fecha) = 4 and @Dias_Mes <=35 then 5
when datediff(wk, @Mes_Ini, @Fecha) = 5 and @Dias_Mes <=35 then 6
end
Select Fecha_Actual = @Fecha_Actual,
Semana_Anio = @Semana_Anio,
Mes = @Mes_Anio,
Mes_Ini = @Mes_Ini,
Mes_Fin = @Mes_Fin,
Dias_mes = @Dias_mes,
Semana_Mes = @Semana_Mes
|