매일 특정 시간에 MySQL 이벤트 스케줄러
여기 제 질문이 있습니다.
CREATE EVENT
RESET ON SCHEDULE AT TIMESTAMP DO
UPDATE `ndic`.`students`
SET `status` = '0';
매일 오후 1시에 상태를 "0"으로 업데이트하려면 어떻게 해야 합니까?
대신 무엇을 사용할 수 있습니까?TIMESTAMP
?
당신의 일에 너무 늦었을 수도 있지만, 제가 한 일은 이렇습니다.저는 매일 새벽 1시에 무언가를 실행하기를 원합니다 - 저는 이것이 당신이 하고 있는 것과 비슷하다고 믿습니다.제가 한 방법은 다음과 같습니다.
CREATE EVENT event_name
ON SCHEDULE
EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR)
DO
# Your awesome query
CREATE EVENT에 대한 설명서는 꽤 좋지만, 제대로 하려면 시간이 좀 걸립니다.
두 가지 문제가 있습니다. 첫째, 이벤트를 반복하도록 하는 것, 둘째, 매일 13시에 실행하도록 하는 것입니다.
이 예에서는 반복 이벤트를 만듭니다.
CREATE EVENT e_hourly
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Clears out sessions table each hour.'
DO
DELETE FROM site_activity.sessions;
명령줄 MySQL 클라이언트에서 다음 작업을 수행할 수 있습니다.
SHOW EVENTS;
이렇게 하면 각 이벤트가 메타데이터와 함께 나열됩니다(예: 이벤트를 한 번만 실행할지 반복할지 여부).
두 번째 문제는 반복되는 이벤트를 특정 일정 항목으로 가리키는 것입니다.
다른 종류의 표현을 시도함으로써, 우리는 다음과 같은 것을 생각해 낼 수 있습니다.
CREATE EVENT IF NOT EXISTS `session_cleaner_event`
ON SCHEDULE
EVERY '1 13' DAY_HOUR
COMMENT 'Clean up sessions at 13:00 daily!'
DO
DELETE FROM site_activity.sessions;
업데이트, 기한 만료:"DAY_HOUR" 단위와의 간격은 'day-number hour-number'와 같은 식을 사용합니다.저는 그것과 일치하도록 자주 받아들여지는 솔루션을 업데이트했습니다.설명해 주셔서 감사합니다, 댓글 달게 달아주셔서 감사합니다!
사용해 보세요.
CREATE EVENT event1
ON SCHEDULE EVERY '1' DAY
STARTS '2012-04-17 13:00:00' -- should be in the future
DO
-- your statements
END
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;
"중요!->
SET GLOBAL event_scheduler = ON;
로그 정리 이벤트를 매일 밤 2시에 실행하는 것을 제외하고는 사용 사례가 유사합니다.위에 댓글에서 말씀드렸듯이 DAY_HOUR은 저에게 맞지 않습니다.저의 경우 첫째 날을 놓치는 것에 대해 크게 개의치 않습니다(그리고 오전 2시에 실행해야 하기 때문에 내일 오전 2시는 거의 항상 다음 2시입니다). 그래서 저는 다음을 사용합니다.
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
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());
언급URL : https://stackoverflow.com/questions/3070277/mysql-event-scheduler-on-a-specific-time-everyday
'programing' 카테고리의 다른 글
Oracle: 저장 프로시저에서 데이터베이스 링크 사용: 테이블 또는 보기가 존재하지 않습니다. (0) | 2023.09.02 |
---|---|
PowerShell에서 배너 메시지를 제거하는 방법 (0) | 2023.09.02 |
봄: 프로필에서 AND를 수행하는 방법? (0) | 2023.09.02 |
MongoDB가 _id 배열의 위치를 선택하시겠습니까? (0) | 2023.03.26 |
파일 API - BLOB에서 JSON으로 (0) | 2023.03.26 |