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

[SOLUCIONADO] buscar registros por fecha en tabla con fecha descompuesta

Estas en el tema de buscar registros por fecha en tabla con fecha descompuesta en el foro de SQL Server en Foros del Web. Os cuento mi problema. Tengo una tabla donde se van insertando eventos, visitas y demás, a modo de agenda. Hay una pequeña aplicación que lo ...
  #1 (permalink)  
Antiguo 08/05/2017, 08:37
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
buscar registros por fecha en tabla con fecha descompuesta

Os cuento mi problema. Tengo una tabla donde se van insertando eventos, visitas y demás, a modo de agenda. Hay una pequeña aplicación que lo gestiona todo, hasta ahí bien. El tema está en que quiero hacer una búsqueda de todos aquellos registros que estén entre dos feches, concretamente entre hoy y hoy+60 días. El problema es que la fecha de de cada evento está descompuesta en diferentes campos (dia, mes y anyo) con lo cual no puedo hacer directamente un Select * from agendavisitas where fecha between fecha1 and fecha2
He probado a usar el Cast as date, pero me da errores por todas partes y ya no se por donde tirar para resolverlo.
¿Algún alma caritativa que se le ocurra como hacerlo para poder hacer esta búsqueda de forma correcta?

Salu2 y gracias
__________________
Vayamos por Partes :: Jack el Destripador
  #2 (permalink)  
Antiguo 08/05/2017, 09:01
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: buscar registros por fecha en tabla con fecha descompuesta

Si tienes los campos año, mes y dia, podrias armar tu fecha con un dateadd y los 3 campos que usas, ya teniendo la fecha armada haces un subquery y pones el filtro y listo :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 09/05/2017, 01:31
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Respuesta: buscar registros por fecha en tabla con fecha descompuesta

¿Me podrías poner un ejemplo por favor? Porque no me ha quedado nada claro :(
__________________
Vayamos por Partes :: Jack el Destripador
  #4 (permalink)  
Antiguo 09/05/2017, 04:43
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Respuesta: buscar registros por fecha en tabla con fecha descompuesta

No hace falta, al final lo he resuelto de otra forma. Aprovechando que había una página que mostraba los eventos del mes actual, recorriendo un bucle de 1 a 31 y comparando dia, mes y año, lo he alargado para que al llegar al 31, vuelva a empezar por el 1, sume un mes y lo haga dos veces, y controlando que el mes no sea 12, en cuyo caso pone el mes a 1 y suma un año. De esta forma, y empezando el bucle en el día actual, muestro los eventos que quedan del mes actual, y los dos meses siguientes, que es lo que querían conseguir, así que resuelto.
Igual no es la mejor forma, pero funciona estupendamente ;)
__________________
Vayamos por Partes :: Jack el Destripador
  #5 (permalink)  
Antiguo 09/05/2017, 08:19
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: buscar registros por fecha en tabla con fecha descompuesta

Que hiciste que??? Si era tan sencillo como hacer esto:

Código SQL:
Ver original
  1. CREATE TABLE #temp(
  2. dato Nvarchar(20),
  3. mes INT,
  4. dia INT,
  5. [año] INT
  6. )
  7.  
  8. INSERT INTO #temp VALUES ('yo',3,4,2017)
  9. INSERT INTO #temp VALUES ('tu',4,5,2017)
  10. INSERT INTO #temp VALUES ('tu',5,6,2017)
  11.  
  12. SELECT * FROM(
  13. SELECT CONVERT(datetime,CONVERT(VARCHAR(20),mes) + '/' + CONVERT(VARCHAR(20),dia) + '/' + CONVERT(VARCHAR(20),[año])) AS fecha, dato FROM #temp
  14. ) AS t1 WHERE fecha BETWEEN '01/01/2017' AND '04/30/2017'

Resultado:

fecha dato
2017-03-04 00:00:00.000 yo
2017-04-05 00:00:00.000 tu

No tenias porque hacer ciclos y demas......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 10/05/2017, 10:48
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: buscar registros por fecha en tabla con fecha descompuesta

Bueno, muchos matamos una cucaracha pisandola, otros tal vez manden llama a toda la milicia de los estados unidos y lancen la super-bomba.....
__________________
MCTS Isaias Islas
  #7 (permalink)  
Antiguo 10/05/2017, 11:15
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: buscar registros por fecha en tabla con fecha descompuesta

Cita:
Iniciado por iislas Ver Mensaje
Bueno, muchos matamos una cucaracha pisandola, otros tal vez manden llama a toda la milicia de los estados unidos y lancen la super-bomba.....
Muy cierto amigo, muy cierto
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: fecha, registros, tabla
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 01:20.