FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Encontrar aniversarios
Buenos días a todos.
Mediante una consulta SQL con tablas Paradox necesito encontrar todas las filas de una tabla en las que su fecha de cumpleaños esté comprendida entre dos dadas que no tienen que ser necesariamente del mismo mes, por ejemplo del 28 de febrero al 2 de marzo. Cuando es una sola fecha no tengo problemas:
Pero ¿cómo podría hacer la consulta cuando son fechas como en el caso que pongo? Última edición por Casimiro Notevi fecha: 01-03-2012 a las 12:01:53. |
#3
|
||||
|
||||
No me vale, y no porque la idea sea mala. Yo tengo dos fechas, por ejemplo las que citaba antes; pero con la estructura que indicas sólo encontraría las del AÑO que se indicara en la fecha y yo necesito sacar las fichas de los cumplen años entre dos fechas de este año independientemente del año de nacimiento.
Última edición por Angel.Matilla fecha: 01-03-2012 a las 17:32:25. Razón: Al crearlo borré trozos por error |
#4
|
||||
|
||||
Hola
A ver asi:
Saludos
__________________
Siempre Novato |
#5
|
||||
|
||||
Una aproximación:
Multiplicar el mes por 31 es necesario para los casos en que el día inicial es mayor que el final aunque el mes inicial se menor. Lo malo es que no sirve para intervalos de fechas que crucen el cambio de año. // Saludos |
#6
|
||||
|
||||
Algo parecido hago yo:
Un Saludo
__________________
Guía de Estilo de los Foros Cita:
|
#7
|
||||
|
||||
A como lo entiendo, la consulta de Caral debería dar los resultados correctos.
A la propuesta de roman no la he probado pero resulta interesante su forma. Saludos, |
#8
|
||||
|
||||
Esta consulta:
no da resultados correctos. Vamos a aterrizar con unos datos específicos: 28 de febrero y 2 de marzo, que son los que ejemplifica Angel.Matilla. La consulta queda así:
Para F_nacimiento = 1 de marzo nos queda:
La condición del primer renglón se cumple, mas no así la del segundo. Y sin embargo, el 1 de marzo sí está entre el 28 de febrero y el 2 de marzo. // Saludos |
#9
|
||||
|
||||
Pues hoy no le doy a nada ... ¡mi cabeza está muy apagada!
Tienes razón roman. ¿Y quizá tal vez no sería más apropiado evaluar sólo en cuanto al mes? Saludos, |
#10
|
||||
|
||||
Gracias a todos por las rspuestas. Voy por partes. En la propuesta de roman no entiendo lo de multiplicar por 31 el mes. En todo caso ¿No sría más lógico multiplicarlo por 100? Desa forma se formarían series desde 101 (1 de enero) al 1231 (31 de diciembre). Esta no se me había ocurrido y la tengo que probar.
La de marcoszorrilla es similar a la primera que me sugirieron pero, al igual que aquella, sólo extrae una fecha de todas las posibles. |
#11
|
||||
|
||||
Confirmado. El código ha quedado así:
Esa fecha final es porque en las tablas Paradox si una fecha se graba vacía por defecto pone el 30 de diciembre de 1788. Última edición por Casimiro Notevi fecha: 02-03-2012 a las 10:02:10. |
#12
|
||||
|
||||
Cita:
De todas formas, recuerda que este método va a fallar si, por ejemplo, quieres saber todos los cumpleaños entre el 28 de ciciembre y el 4 de enero. // Saludos |
#13
|
||||
|
||||
Para las fechas que "cruzan" de año, como el ejemplo de roman no queda más remedio que armar una condición del tipo:
De este modo se mostrarán aquellas fechas que sean desde el mes "inicial" hasta diciembre inclusive, más las fechas que sean de enero hasta la fecha "final". Un criterio similar se puede, y debe, llevar a cabo con el tema los días "cruzados" La cuestión es que ahora la lógica pasa por armar esta condición aplicando una evaluación previa de si el mes final es menor al inicial; y lo mismo aplica para el día. Saludos, |
#14
|
||||
|
||||
Bueno, se supone que todo mes es menor o igual que 12 y mayor o gual que 1, por lo que esos dos condicionales sobrarían.
Lo de la evaluación previa, creo que podemos hacerla en la misma consulta comparando los parámetros en sí:
Un ejemplo de uso:
Conste que puse 100 para que no se extrañen . No la he probado del todo pero creo que funciona salvo porque me falta el caso de que las fechas inicial y final sean iguales, pero no debe ser mayor problema. // Saludos |
#15
|
||||
|
||||
¿Ves? Eso no se me había ocurrido, lo de "agrandar" la parte del mes usando una cifra diferente de 100.
El otro problema, el del salto de año (p.ej.: del 28/12/2012 al 04/01/2013) en parte lo soluciono no permitiendo al operador que introduzca fechas superiores al 31 de diciembre del año en curso, pero es cierto que no es la mejor solución y hasta que vea otra opción... |
#16
|
||||
|
||||
Cita:
// Saludos |
#17
|
||||
|
||||
Sí, lo probé pero con el código que puse yo también pude resolverlo. Gracias Roman.
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Encontrar importe | Waldo | Varios | 2 | 14-01-2010 19:39:08 |
Donde encontrar | b0rn | OOP | 3 | 03-04-2007 01:05:22 |
Cómo encontrar | Roilo | Varios | 1 | 07-12-2005 15:48:12 |
Encontrar la paz interior | santana | Humor | 3 | 14-06-2004 18:47:35 |
encontrar el siguiente en ado | jzginez | Conexión con bases de datos | 1 | 21-05-2004 11:42:08 |
|