No necesitas hacer el update,
Cita: Entonces el cliente inserta unos días y horas determinadas que se almacenarán en la bd asociados a su anuncio
como bien dices esa informació ya se ha guardada en la bbdd, luego solo tienes que relacionar esa información con los anuncios para que se puebliquen.
TablaAnuncios
idAnuncio
....
TablaPeticionesClientes
fechaHoraInicial
fechaHoraFinal
idAnuncio
Sin hacer ningún UPDATE esa query retorna los anuncios a publicar.
Una alternativa para conservar el uso de la fecha de inserción seria
Código MySQL:
Ver original if(sbc.idAnuncio
IS NULL, a.fechaInsercion
,NOW()) fechaPublic
FROM TablaPeticionesClientes
AND fechaHoraFinal
>=now()) sbc
ON a.idAnuncio
=sbc.idAnuncio
La idea es que como la información necesaria ya esta en la bbdd no tengas que hacer ninguna operación para modificar otra información en la bbdd que pasaria a depender de la primera, incurriendo en un error en el paradigma relacional.
Otra alternativa seria guardar la peticiones del cliente directamente en la tabla de anuncios
TablaAnuncios
idAnuncio
....
fechaHoraInicial <----Petición del cliente
fechaHoraFinal
Ahora si tendrias que hacer un update pero seleccionando por el idAnuncio
Donde XXXXXXXX e YYYYYYYYYYYY son las fechas pedidas y Z el anuncio.
Y en este caso la query seria
La primera opción, con dos tablas, generara un historico que puede servir para otras cosas, cobrar p.e., la segunda no.
Y aún una tercera opción con este update
Sin histórico, pero seria la mas simple.