Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

semana del mes

Estas en el tema de semana del mes en el foro de SQL Server en Foros del Web. que tal quisiera saber como puedo obtener en el sqlserver 2000 la semana de un determinado mes mediante un dato de fecha por ejemplo si ...
  #1 (permalink)  
Antiguo 03/02/2006, 10:06
Usuario no validado
 
Fecha de Ingreso: octubre-2004
Mensajes: 3
Antigüedad: 19 años, 6 meses
Puntos: 0
semana del mes

que tal quisiera saber como puedo obtener en el sqlserver 2000 la semana de un determinado mes mediante un dato de fecha por ejemplo si coloco la fecha 01/01/2006 me devuelva 1 por que esa fecha esta en la primera semana de Enero si colocara 14/02/2006 me devolveria 3 por que esta fecha se encuentra en la tercera semana de Febrero
gracias.
  #2 (permalink)  
Antiguo 03/02/2006, 12:33
Avatar de rats  
Fecha de Ingreso: septiembre-2005
Mensajes: 23
Antigüedad: 18 años, 7 meses
Puntos: 0
De acuerdo 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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:33.