Basically, i want to create an event that every day delete rows wherecheck_in value in older than today.
Using MySQL 8.0.34:
CREATE TABLE ts ( c1 INT AUTO_INCREMENT PRIMARY KEY, c2 TIMESTAMP NOT NULL);
Assume that c2
is the check_in
column. Some sample data (and today is 2023-11-30
):
Some data:
+----+---------------------+| c1 | c2 |+----+---------------------+| 1 | 2023-11-30 11:28:57 || 2 | 2023-11-28 20:30:00 || 3 | 2023-11-29 23:59:59 || 4 | 2023-11-30 00:00:01 |+----+---------------------+
The query:
SELECT * FROM ts WHERE c2 < TIMESTAMP(DATE(CURRENT_TIMESTAMP));+----+---------------------+| c1 | c2 |+----+---------------------+| 2 | 2023-11-28 20:30:00 || 3 | 2023-11-29 23:59:59 |+----+---------------------+
The event:
delimiter |CREATE EVENT delete_daily ON SCHEDULE EVERY 1 DAY COMMENT 'Deletes rows each day where c2 column value is older than today' DO BEGIN DELETE FROM ts WHERE c2 < TIMESTAMP(DATE(CURRENT_TIMESTAMP)); END |delimiter ;
Verify the event creation:
SHOW EVENTS\G*************************** 1. row *************************** Db: test_db Name: delete_daily Definer: admin_1@localhost Time zone: SYSTEM Type: RECURRING Execute at: NULL Interval value: 1 Interval field: DAY Starts: 2023-11-30 12:02:08 Ends: NULL Status: ENABLED...