Voici ma requête
CREATE EVENT reset ON SCHEDULE AT TIMESTAMP DO UPDATE `ndic`.`students` SET `status` = '0';
Comment puis-je mettre à jour le statut à "0" à 13 h tous les jours. Que dois-je mettre à la place de TIMESTAMP?
la documentation sur CREATE EVENT est assez bonne, mais il faut un certain temps pour bien faire les choses.
Vous avez deux problèmes, premièrement, pour que l'événement se reproduise , deuxièmement, pour le faire fonctionner à 13h00 tous les jours .
Cet exemple crée un événement récurrent.
CREATE EVENT e_hourly
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Clears out sessions table each hour.'
DO
DELETE FROM site_activity.sessions;
Lorsque vous êtes dans le client MySQL en ligne de commande, vous pouvez:
SHOW EVENTS;
Cela répertorie chaque événement avec ses métadonnées, comme s'il devait s'exécuter une seule fois ou être récurrent.
Le deuxième problème: pointant l'événement récurrent vers un élément de planification spécifique .
En essayant différents types d'expression, nous pouvons trouver quelque chose comme:
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;
C'est peut-être trop tard pour votre travail, mais voici comment je l'ai fait. Je veux que quelque chose soit exécuté tous les jours à 1 h du matin - je crois que cela ressemble à ce que vous faites. Voici comment je l'ai fait:
CREATE EVENT event_name
ON SCHEDULE
EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR)
DO
# Your awesome query
Mon cas d'utilisation est similaire, sauf que je veux qu'un événement de nettoyage des journaux s'exécute à 2 heures du matin tous les soirs. Comme je l'ai dit dans le commentaire ci-dessus, le DAY_HOUR ne fonctionne pas pour moi. Dans mon cas, cela ne me dérange pas vraiment de manquer potentiellement le premier jour (et, étant donné qu'il doit fonctionner à 2 heures du matin, puis 2 heures du matin est presque toujours le 2 heures suivant), j'utilise donc:
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;
¡IMPORTANT! ->
SET GLOBAL event_scheduler = ON;
Essaye ça
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());