MySQL - Actualizar registros q cumplan una condicion

 
Vista:

Actualizar registros q cumplan una condicion

Publicado por Miguel (4 intervenciones) el 27/05/2016 03:14:28
Buenas noches. Tengo una tabla con los campos fecha de inicio y fecha de fin, calcular los dias transcurridos entre fecha de inicio y fecha fin, supongamos que sean 30 dias transcurridos, todos los registros q tengan 30 dias sea actualize el campo fecha fin con unanueva fecha para asi no exceder los 30 dias

Muchas gracias cuento con uds
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 20
Ha disminuido su posición en 25 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Actualizar registros q cumplan una condicion

Publicado por Gonzalo (103 intervenciones) el 27/05/2016 22:38:12
No se entiende lo que quieres hacer.

Si ya tienes un campo fecha_inicio y otro fecha_fin, supone que los campos ya tienen datos, y que esos datos tienen 30 días de diferentcia.
¿Qué es lo que quieres modificar en fecha_fin exactamente? ¿Como impediría hacer nada eso?

Tengo la impresión de que estas describiendo mal la cosa.
Voy a hacer una suposición:
* Tienes un campo fecha_inicio que indica cuando se inicia el procesamiento o la espera para una X acción.
* El campo fecha_fin es nulo, y solo se llena cuando la tarea se completa o cancela.
* Necesitas que en forma automática, se de por cerrada la tarea poniéndole en fecha_fin la fecha actual del sistema, si la diferencia entre fecha_inicio y la fecha actual es de treinta (30) días.

¿Esa sería la idea?

Si es así, eso no es dificil de hacer. Simplemente creas un EVENT que ejecute el update correspondiente.

Es EVENT debería ejecutar:

1
2
3
4
5
6
7
CREATE EVENT myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
    DO
UPDATE tabla
SET fecha_fin = CURDATE()
WHERE fecha_fin IS NULL
AND DATEDIFF(CURDATE(), fecha_inicio) >= 30;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Actualizar registros q cumplan una condicion

Publicado por Miguel (4 intervenciones) el 28/05/2016 17:56:51
Tenemos esta BD_Registro, con los campos n°, id_numero, fecha_inicio, fecregistro quiero realizar una consulta de actualizacion para los registros que excedan los 30 dias entre la fecha _inicio y fecregistro. Los registros q excedan los 30 dias se modificara el campo fecregistro con una nueva fecha asignada para asi no exceder los 30 dias

N° Id_Numero Fecha_Inicio FecRegistro
1 00052965 22/02/2016 24/03/2016
2 00053651 18/02/2016 22/03/2016
3 00054302 10/02/2016 05/03/2016
4 00054315 02/02/2016 07/03/2016
5 00057411 23/02/2016 02/03/2016

No puedo estoy haciendo algo asi pero me da error:

update bd_registro SET Fecregistro=''03/03/2016"
where DATEDIFF(DD,fecha_inicio,ate_Fecregistro)>30

Quieiera que el resultado sea esto:

N° Id_Numero Fecha_Inicio FecRegistro
1 00052965 22/02/2016 03/03/2016
2 00053651 18/02/2016 03/03/2016
3 00054302 10/02/2016 05/03/2016
4 00054315 02/02/2016 03/03/2016
5 00057411 23/02/2016 02/03/2016

Los registros que exceden los 30 dias son 1, 2 y 4 tendrian q ser modificados a la fecha 03/03/2016
tal como se muestra en el segundo grupo de datos.

Les agradesco su gran ayuda. la Bd esta en Mysql
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Actualizar registros q cumplan una condicion

Publicado por Miguel (1 intervención) el 28/05/2016 17:35:02
Tenemos esta BD_Registro, con los campos n°, id_numero, fecha_inicio, fecregistro quiero realizar una consulta de actualizacion para los registros que excedan los 30 dias entre la fecha _inicio y fecregistro. Los registros q excedan los 30 dias se modificara el campo fecregistro con una nueva fecha asignada para asi no exceder los 30 dias

N° Id_Numero Fecha_Inicio FecRegistro
1 00052965 22/02/2016 24/03/2016
2 00053651 18/02/2016 22/03/2016
3 00054302 10/02/2016 05/03/2016
4 00054315 02/02/2016 07/03/2016
5 00057411 23/02/2016 02/03/2016

No puedo estoy haciendo algo asi pero me da error:

update bd_registro SET Fecregistro=''03/03/2016"
where DATEDIFF(DD,fecha_inicio,ate_Fecregistro)>30

Quieiera que el resultado sea esto:

N° Id_Numero Fecha_Inicio FecRegistro
1 00052965 22/02/2016 03/03/2016
2 00053651 18/02/2016 03/03/2016
3 00054302 10/02/2016 05/03/2016
4 00054315 02/02/2016 03/03/2016
5 00057411 23/02/2016 02/03/2016

Los registros que exceden los 30 dias son 1, 2 y 4 tendrian q ser modificados a la fecha 03/03/2016
tal como se muestra en el segundo grupo de datos.

Les agradesco su gran ayuda. la Bd esta en Mysql
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 20
Ha disminuido su posición en 25 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Actualizar registros q cumplan una condicion

Publicado por Gonzalo (103 intervenciones) el 31/05/2016 15:32:25
Quiero imaginar que los campos Fecha_Inicio y FecRegistro son ambos DATETIME, y NO son VARCHAR, como parecen serlo por tlo que muestras...

¿Es correcto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Actualizar registros q cumplan una condicion

Publicado por Miguel (4 intervenciones) el 01/06/2016 07:18:08
Exacto son datetime 31-05-2016 06:45:34 y estoy usando workbench o que modulador me recomienda.
Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 20
Ha disminuido su posición en 25 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Actualizar registros q cumplan una condicion

Publicado por Gonzalo (103 intervenciones) el 02/06/2016 15:10:11
¿Probaste lo que te propuse?

1
2
3
4
5
6
7
CREATE EVENT myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
    DO
UPDATE tabla
SET fecha_fin = CURDATE()
WHERE fecha_fin IS NULL
AND DATEDIFF(CURDATE(), fecha_inicio) >= 30;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar