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

[SOLUCIONADO] Registros en un espacio de tiempo en MySQL

Estas en el tema de Registros en un espacio de tiempo en MySQL en el foro de Bases de Datos General en Foros del Web. Buenas tardes. Estoy dándole vueltas a una cosa y no tengo forma de conseguir y vengo aquí para ver si me ilumináis. Quiero mantener en ...
  #1 (permalink)  
Antiguo 25/03/2015, 06:10
todasontodas
Invitado
 
Mensajes: n/a
Puntos:
Registros en un espacio de tiempo en MySQL

Buenas tardes.

Estoy dándole vueltas a una cosa y no tengo forma de conseguir y vengo aquí para ver si me ilumináis.

Quiero mantener en la base de datos los últimos 5 años de varias tablas. El caso seria este:

Fecha | servicio | cantidad


Solo quiero ir almacenado los ultimo 5 años. La base de datos se va a ir llenando y al llegar a los 5 años pues tendría que irse borrando automáticamente los registros que pasasen de 5 años.

Espero que me entendáis XD.

Saludos y gracias.
  #2 (permalink)  
Antiguo 25/03/2015, 08:26
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: Registros en un espacio de tiempo en MySQL

sip se te entiende, pero cual es el problema? la consulta? como hacer el scheduled task para que se haga cada cierto tiempo?? que avances llevas???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 25/03/2015, 09:20
todasontodas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Registros en un espacio de tiempo en MySQL

Pues te comento. No se por donde meterle mano a la hora de ir borrando los registros antiguos. Se que pondría una tarea en el cron para que me ejecutara el script el cual llamaría a un PHP que me borrase los registro de mas de 5 años. Pero no se como crear ese PHP.

Saludos y gracias
  #4 (permalink)  
Antiguo 25/03/2015, 10:13
todasontodas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Registros en un espacio de tiempo en MySQL

Voy avanzando un poco.
Código MySQL:
Ver original
  1. CREATE EVENT e_Borra
  2. ON SCHEDULE AT now() + INTERVAL 1 MINUTE
  3. DO DELETE Datos

Tengo problemas de sintaxis pero mi objetivo es que para hacer pruebas primero, conseguir que teniendo una base de datos con datos de los ultimos 3 dias, tener los datos siempre del ultimo dia y se que se vayan borrando el resto con el obejtivo de que siempre tenga un dia en la base de datos.
Os pongo un ejemplo de mi base de datos:

Fecha | servicio | cantidad |
2015-03-20 13:54:0 | NTP | 2 |

Última edición por gnzsoloyo; 25/03/2015 a las 10:52
  #5 (permalink)  
Antiguo 25/03/2015, 11:00
todasontodas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Registros en un espacio de tiempo en MySQL

Voy afinando mas, pero ahora me borra todos los registro de la base de datos:

Código MySQL:
Ver original
  1. create event bonificacion
  2. ON SCHEDULE AT now() + INTERVAL 1 MINUTE
  3. DELETE FROM Datos

creo que es un problema a la hora de cogerme la fecha y hora.

Alguien me puede echar una mano?

Última edición por gnzsoloyo; 25/03/2015 a las 11:19
  #6 (permalink)  
Antiguo 25/03/2015, 11:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Registros en un espacio de tiempo en MySQL

Cita:
creo que es un problema a la hora de cogerme la fecha y hora.
Por supuesto... Le estás diciendo que te borre todo lo que haya con fecha posterior a la hora y fecha actual mas dos minutos.
Básicamente, que te borre todo.

¿Te queda claro que "ADD" en inglés representa "SUMAR"?

Si lo que quieres es que borre todo lo anterior a 5 años, la cosa es mas o menos simple:
Código MySQL:
Ver original
  1. CREATE EVENT bonificacion
  2. ON SCHEDULE AT now() + INTERVAL 1 MINUTE
  3. DELETE FROM Datos
  4. WHERE Fecha < SUBDATE(NOW(), INTERVAL 5 YEAR);

o bien:
Código MySQL:
Ver original
  1. CREATE EVENT bonificacion
  2. ON SCHEDULE AT now() + INTERVAL 1 MINUTE
  3. DELETE FROM Datos
  4. WHERE YEAR(Fecha) < (YEAR(NOW())-5);
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 25/03/2015 a las 11:25
  #7 (permalink)  
Antiguo 26/03/2015, 02:13
todasontodas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Registros en un espacio de tiempo en MySQL

Mil gracias tenias toda la razon, se me fue la pinza y no vi que me adelante al tiempo añadiendo el ADD XD.

Muchas gracias de nuevo por la ayuda y saludos.

Etiquetas: espacio, mysql, registros, tabla, tiempo
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 19:46.