Я хочу удалить старые записи в моей базе данных, которые хранят запись из HTML-формы, которая состоит из
Я хочу истечь строку и удалить ее после 30/90 дней в зависимости от периода действия, выбранного из date_of_entry
Я нашел это, но как мне его изменить в соответствии с моими потребностями
DELETE FROM myTable WHERE date_of_entry < DATEADD(MONTH, -1, GETDATE())
Также обратите внимание, что я использую форму, которая отправляет значение в качестве 30 или 90 $duration = $_POST['duration'];
И эта проверка должна выполняться самим MySQL. Я использую phpMyAdmin
В основном вы должны удалять устаревшие строки, где текущая дата превышает date_of_entry
и дни validity
таким образом:
now() > date_add(date_of_entry, interval validity day)
create table tbl (id int, date_of_entry datetime, validity int);
insert into tbl values (1, DATE_ADD(NOW(), INTERVAL -31 DAY), 30), (1, DATE_ADD(NOW(), INTERVAL -29 DAY), 30), (1, DATE_ADD(NOW(), INTERVAL -92 DAY), 90), (1, DATE_ADD(NOW(), INTERVAL -89 DAY), 90);
delete from tbl where now() > date_add(date_of_entry, interval validity day)
select * from tbl;
id | date_of_entry | validity -: | :------------------ | -------: 1 | 2018-03-11 18:16:43 | 30 1 | 2018-01-10 18:16:43 | 90
dbfiddle здесь
В MySQL вы бы сделали что-то вроде:
delete t from mytable t
where date_of_entry < curdate() - interval validity day;
Это предполагает, что validity
равна либо числу 30, либо 90.
DELETE FROM mytable WHERE date_of_entry <
DATE_ADD( CURDATE() ,INTERVAL validity*-1 DAY) ;