MySQL Event Scheduler em um horário específico todos os dias

Aqui está minha consulta

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

Como posso atualizar o status para “0” às 13:00 todos os dias? O que devo colocar em vez do TIMESTAMP?

A documentação do CREATE EVENT é muito boa, mas demora um pouco para acertar.

Você tem dois problemas: primeiro, fazer o evento se repetir , segundo, fazê-lo funcionar às 13:00 diariamente .

Este exemplo cria um evento recorrente.

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

Quando no cliente MySQL da linha de comando, você pode:

 SHOW EVENTS; 

Isso lista cada evento com seus metadados, como se ele fosse executado apenas uma vez ou fosse recorrente.

O segundo problema: apontar o evento recorrente para um item de programação específico .

Ao experimentar diferentes tipos de expressão, podemos chegar a 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; 

Isso pode ser tarde demais para o seu trabalho, mas aqui está como eu fiz isso. Eu quero que algo corra todos os dias às 01:00 – Eu acredito que isso é semelhante ao que você está fazendo. Aqui está como eu fiz:

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

Meu caso de uso é semelhante, exceto que eu quero que um evento de limpeza de log seja executado às 2h todas as noites. Como eu disse no comentário acima, o DAY_HOUR não funciona para mim. No meu caso eu realmente não me importo de perder o primeiro dia (e, dado que é para correr às 2 da manhã e às 2 da manhã de amanhã é quase sempre às 2 da manhã) então eu 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; 

Tente isso

 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());