Progtwigdor de eventos MySQL en un horario específico todos los días

Aquí está mi consulta

CREATE EVENT reset ON SCHEDULE AT TIMESTAMP DO UPDATE `ndic`.`students` SET `status` = '0'; 

¿Cómo puedo actualizar el estado a “0” a la 1 pm todos los días? ¿Qué debería poner en lugar de TIMESTAMP?

La documentación sobre CREATE EVENT es bastante buena, pero lleva un tiempo hacerlo bien.

Tienes dos problemas, primero, hacer que el evento sea recurrente , segundo, hacer que funcione a las 13:00 todos los días .

Este ejemplo crea un evento recurrente.

 CREATE EVENT e_hourly ON SCHEDULE EVERY 1 HOUR COMMENT 'Clears out sessions table each hour.' DO DELETE FROM site_activity.sessions; 

Cuando está en el cliente MySQL de línea de comandos, puede:

 SHOW EVENTS; 

Esto enumera cada evento con sus metadatos, como si se ejecutara solo una vez o fuera recurrente.

El segundo problema: señalar el evento recurrente a un elemento de progtwigción específico .

Al probar diferentes tipos de expresiones, podemos pensar en algo como:

 CREATE EVENT IF NOT EXISTS `session_cleaner_event` ON SCHEDULE EVERY 13 DAY_HOUR COMMENT 'Clean up sessions at 13:00 daily!' DO DELETE FROM site_activity.sessions; 

Esto puede ser demasiado tarde para su trabajo, pero así es como lo hice. Quiero que se ejecute todos los días a la 1 AM. Creo que esto es similar a lo que estás haciendo. Así es como lo hice:

 CREATE EVENT event_name ON SCHEDULE EVERY 1 DAY STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR) DO # Your awesome query 

Mi caso de uso es similar, excepto que quiero que un evento de limpieza de registro se ejecute a las 2 a.m. todas las noches. Como dije en el comentario anterior, DAY_HOUR no funciona para mí. En mi caso, realmente no me importa perderme potencialmente el primer día (y, dado que es para correr a las 2 a.m. y a las 2 a.m. mañana, casi siempre será a las 2 a.m.) entonces uso:

 CREATE EVENT applog_clean_event ON SCHEDULE EVERY 1 DAY STARTS str_to_date( date_format(now(), '%Y%m%d 0200'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY COMMENT 'Test' DO 
 DROP EVENT IF EXISTS xxxEVENTxxx; CREATE EVENT xxxEVENTxxx ON SCHEDULE EVERY 1 DAY STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR) DO --process; 

¡IMPORTANTE! ->

 SET GLOBAL event_scheduler = ON; 

Prueba esto

 CREATE EVENT event1 ON SCHEDULE EVERY '1' DAY STARTS '2012-04-17 13:00:00' -- should be in the future DO -- your statements END 
 CREATE EVENT test_event_03 ON SCHEDULE EVERY 1 MINUTE STARTS CURRENT_TIMESTAMP ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO INSERT INTO messages(message,created_at) VALUES('Test MySQL recurring Event',NOW());