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

Calculo domingos SQL

Estas en el tema de Calculo domingos SQL en el foro de Bases de Datos General en Foros del Web. Hola foreros, Mi problema es el siguiente necesito una query que me calcule los asbados y domingos que hay entre dos fechas dadas y no ...
  #1 (permalink)  
Antiguo 11/05/2006, 09:37
Avatar de CiberPunk  
Fecha de Ingreso: agosto-2005
Ubicación: El mundo
Mensajes: 61
Antigüedad: 19 años, 2 meses
Puntos: 0
Calculo domingos SQL

Hola foreros,

Mi problema es el siguiente necesito una query que me calcule los asbados y domingos que hay entre dos fechas dadas y no puedo utilizar cursores!!!,yo habia pensado en ir sumandole un dia a la fecha inicio hasta llegar a la fin y mediante el datepart que me dijera el numero de dia que tocaba asi si es 6 o 0 ya se que es festivo pero sin cursores no se como montarmelo,

Alguna sugerencia.

Gracias foreros!!!
__________________
Pollo k no kakarea.... Gatillazo k resuena
  #2 (permalink)  
Antiguo 11/05/2006, 09:55
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años, 7 meses
Puntos: 3
Hola compañero, puedo darte una pequeña sugerencia, pero primero tienes que comentar, que BD usas, dependiendo de eso, puedes hacer una consulta dentro del rango que desees, usando una función que te compara el nombre del dia.

Por ejemplo en Mysql, esta función es DATE_FORMAT(fecha,'%a') si haces esto, te sale las iniciales del dia. Puedes hacer una comparación:

select fecha,count(*)
from tabla
where fecha1>=dato AND dato<=fecha2 and date_format(dato,'%a');

No lo he probado, es solo una idea....
Saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #3 (permalink)  
Antiguo 11/05/2006, 09:55
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años, 7 meses
Puntos: 3
Epa, falta el group by en la parte final, cualquier cosita, para ayudarnos....
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #4 (permalink)  
Antiguo 11/05/2006, 10:04
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años, 7 meses
Puntos: 3
Especifiquemos algo más:
select fecha,count(*)
from tabla
where fecha1>=dato AND dato<=fecha2 and date_format(dato,'%a')='Sun'
group by fecha;

Ahora si, espero que te ayude, no se si eso deseas...
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #5 (permalink)  
Antiguo 11/05/2006, 10:16
Avatar de claray  
Fecha de Ingreso: agosto-2004
Ubicación: ahora... en Caracas
Mensajes: 345
Antigüedad: 20 años, 3 meses
Puntos: 0
Y por que no te sirve la idea ...

Hola CiberPunk. La idea que planteas de ir incrmentando la fecha con dateadd es logica y funcional... por que no te sirve? si lo que necesitas saber es el numeo de sabados y domingos entre dos fechas dadas no necesitas hacer un query...:

(Pseudocodigo:)

funcion cuenta(fechaini,fechafin datetime)
contador = 0
mientras fechaini<=fechafin hacer
si fechaini es sabado o domingo entonces contador=contador +1
fechaini=fechaini + un dia
fin mientras
retornar contador
fin funcion

(me da fastidio escribir el TSQL correspondiente, pero esta claro que "si fehca ini es sabado o domingo" se debe sustituir por un datepart(dw,fechaini), y que el "fechaini=fechaini + un dia" es un dateadd...)

A menos que... necesites saber de un conjunto de registros con fecha, cuales de ellas son sabado y domingo, para lo cual podrias hacerlo con una consulta:

select count(*) from latabla where
datepart(dw,lafecha)=1 or datepart(dw,lafecha)=7 and (lafecha betwen fechainicial and fechafinal)

espero que te sirva....
saludos y suerte
__________________
:pirata: El arte de desarrollar es dejar que los otros lo hagan
  #6 (permalink)  
Antiguo 11/05/2006, 10:24
Avatar de CiberPunk  
Fecha de Ingreso: agosto-2005
Ubicación: El mundo
Mensajes: 61
Antigüedad: 19 años, 2 meses
Puntos: 0
Exclamación

Gracias gentes del mundo por la informacion.

Un saludo a todos!
__________________
Pollo k no kakarea.... Gatillazo k resuena
  #7 (permalink)  
Antiguo 11/05/2006, 10:35
Avatar de CiberPunk  
Fecha de Ingreso: agosto-2005
Ubicación: El mundo
Mensajes: 61
Antigüedad: 19 años, 2 meses
Puntos: 0
Arrrssssssss

Haber esto es lo que ha salido de este post pero me casca en el DATEADD:

BEGIN
SET @FIN_DE_SEMANA = 0
WHILE @FEC_ALTA = @FEC_ALTA + @PLAZO_ENTREGA

SELECT @DIA_FIN_DE_SEMANA = DATEPART(dw,CONVERT(VARCHAR, @FEC_ALTA, 101))

If @DIA_FIN_DE_SEMANA = 6
BEGIN
SET @FIN_DE_SEMANA = @FIN_DE_SEMANA + 1
END

If @DIA_FIN_DE_SEMANA = 0
BEGIN
SET @FIN_DE_SEMANA = @FIN_DE_SEMANA + 1
END

CONVERT(DATETIME,DATEADD(DD, 1, @FEC_ALTA),101)

END -- WHILE
END
__________________
Pollo k no kakarea.... Gatillazo k resuena
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




La zona horaria es GMT -6. Ahora son las 14:28.