HOlas, necesito calcular la cantidad de dias lunes que hay desde una fecha a otra.
Cualquier ayuda seria bienvenida.
saludos!!!!!!!!
ayuda plis !!!
| |||
Respuesta: Calcular cantidad de dias lunes de fecha uno a fecha dos Que tal. Un aprox es que cada 7 días seguro hay un lunes. Enonces divides los dias de diferencia entre las dos fechas y divides entre 7 y ya tienes una parte. Sino hay residuo entonces ya esta. Pero si hay residuo tienes que ver otras cuestiones como saber en que día empieza la semana para tí. Saludos. |
| ||||
Respuesta: Calcular cantidad de dias lunes de fecha uno a fecha dos Asi es.. Espero te sirva para iniciar..
Código:
Saludos! SET DATEFIRST 1 DECLARE @FechaInicial datetime, @FechaFinal datetime, @Add int SET @FechaInicial = '20090814' SET @FechaFinal = '20090831' SET @Add = 1 IF DATEPART(dw, @FechaFinal) <> 1 SET @FechaFinal = dateadd(dd, 1 -DATEPART(dw, @FechaFinal), @FechaFinal) IF DATEPART(dw, @FechaInicial) <> 1 SET @FechaInicial = dateadd(dd, 8 - DATEPART(dw, @FechaInicial), @FechaInicial) IF DATEDIFF(dd, @FechaInicial, @FechaFinal) < 0 BEGIN SET @Add = 0 SET @FechaFinal = @FechaInicial END SELECT DATEDIFF(ww, @FechaInicial, @FechaFinal) + @Add AS MondaysCount
__________________ La sencillez y naturalidad son el supremo y último fin de la cultura... -- MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications. |
| ||||
Respuesta: Calcular cantidad de dias lunes de fecha uno a fecha dos Bueno, esta es mi version:
Código sql:
El llamado:Ver original
Código sql:
Ver original
__________________ No repitamos temas, usemos el Motor de busquedas Plantea bien tu problema: Ayúdanos a ayudarte. |
| ||||
Respuesta: Calcular cantidad de dias lunes de fecha uno a fecha dos Aunque no me gusta trabajar con ciclos, ya que la funcion la aplicas n veces segun el numero de dias que halla en el rango, incluso creo que se puede evitar el insert..
Código:
alter FUNCTION CuantosDiasSemana(@FechaInicio datetime,@FechaFin datetime,@DiaSemana tinyint = 1) returns int AS begin IF @FechaInicio > @FechaFin RETURN 0 DECLARE @icuenta int SET @icuenta = 0 while @FechaInicio <= @FechaFin BEGIN IF DATEPART(WEEKDAY, @FechaInicio) = @DiaSemana SET @icuenta = @icuenta + 1 SET @FechaInicio = @FechaInicio + 1 END RETURN @icuenta END Como comentario, fijate que en el server tengo una tabla con las fechas por dia y rangos de semana, meses...mismas que me son de mucha utilidad cuando requiero por ejemplo hacer cortes, o contar cosas como estas... no tengo que andar insertando porque ya esta ahi la info.. Saludos!
__________________ La sencillez y naturalidad son el supremo y último fin de la cultura... -- MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications. |
| ||||
Respuesta: Calcular cantidad de dias lunes de fecha uno a fecha dos Je, je.. por pensar en el select que suma los dias lunes olvidé mejorar el ciclo. Gracias por la mejora.
__________________ No repitamos temas, usemos el Motor de busquedas Plantea bien tu problema: Ayúdanos a ayudarte. |
| ||||
Respuesta: Calcular cantidad de dias lunes de fecha uno a fecha dos Bueno, veo que finalmente si hubieron respuestas a la duda inicial de muzztein, él pasó por el foro de ASP y ahí también obtuvo una respuesta en T-SQL, lo comento por si alguien más encuentra este hilo en un futuro y le sirve. Saludos |
| ||||
Respuesta: Calcular cantidad de dias lunes de fecha uno a fecha dos jejeje espero que si.. Edit: Aunque al probar el script obtuve un resultado no esperado... Tal vez entendi mal la pregunta...ya que me dice que solo hay 2 lunes entre el 14 de agosto y el Primero de septiembre...
Código:
Saludos! DECLARE @FechaIni datetime, @FechaFin datetime, @FechaActual datetime, @FechaLunes datetime, @NumLunes int SET @FechaIni = '20090814' SET @FechaFin = '20090901' SET @FechaActual = @FechaIni SET @NumLunes = 0 SELECT @FechaIni, @FechaFin WHILE @FechaActual < @FechaFin BEGIN SELECT @FechaLunes = DATEADD(wk, DATEDIFF(wk,0,@FechaActual), 0) IF @FechaLunes > @FechaIni BEGIN SET @NumLunes = @NumLunes + 1 --PRINT CAST(@NumLunes as varchar) + ') '+ CAST(@FechaLunes as varchar) END SELECT @FechaActual = DATEADD(Week, 1, @FechaActual) END select @NumLunes ------------------------ ------------------------- 2009-08-14 00:00:00.000 2009-09-01 00:00:00.000 (1 row(s) affected) ----------- 2 (1 row(s) affected)
__________________ La sencillez y naturalidad son el supremo y último fin de la cultura... -- MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications. Última edición por Andres95; 17/08/2009 a las 06:36 |
| ||||
Respuesta: Calcular cantidad de dias lunes de fecha uno a fecha dos Hola Andres95, gracias por hacerme notar ese error de lógica, cuando lo hice lo hice a las carreras y no consideré el caso que encontraste; el error estaría en la condición del WHILE ya que como yo sumo semanas para no recorrer cada fecha, en el caso del 14 de agosto al sumar tres semanas llegó al 4 de septiembre y por dicha condición ya no entra al ciclo. Creo que modificando de esta forma el programa se arregla el asunto: Cita: Con eso leo una semana más allá de la fecha final pero solo considero el lunes que este dentro de la fecha límite.... WHILE @FechaActual <= DATEADD(Week, 1, @FechaFin) BEGIN SELECT @FechaLunes = DATEADD(wk, DATEDIFF(wk,0,@FechaActual), 0) IF (@FechaLunes > @FechaIni) and (@FechaLunes <= @FechaFin ) .... Si encuentras otro fallo, o alguna mejora, por favor, coméntalo Muchas gracias! |
| ||||
Respuesta: Calcular cantidad de dias lunes de fecha uno a fecha dos ok, solo era para tener la referencia... Saludos!
__________________ La sencillez y naturalidad son el supremo y último fin de la cultura... -- MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications. |
| |||
Respuesta: Calcular cantidad de dias lunes de fecha uno a fecha dos Espero que te sirva el siguiente código, esta muy sencillo SET DATEFIRST 1 -- SE ESTABLECE QUE EL DIA LUNES ES EL PRIMER DIA DE LA SEMANA DECLARE @FECHA_INICIAL DATETIME, @FECHA_FINAL DATETIME, @CONTADOR INTEGER SET @FECHA_INICIAL='01/07/2009' SET @FECHA_FINAL='31/07/2009' SET @CONTADOR=0 WHILE (@FECHA_INICIAL<=@FECHA_FINAL) BEGIN IF(DATEPART(DW,@FECHA_INICIAL)=1) -- SI EL DIA ES IGUAL AL DIA 1 DE LA SEMANA ES DECIR LUNES SET @CONTADOR=@CONTADOR+1 -- SI ES ASI SE INCREMENTA EL CONTADOR SET @FECHA_INICIAL=@FECHA_INICIAL+1 END SELECT @CONTADOR AS NUMERO_DE_LUNES |