我想删除数据库中的旧记录,该记录存储来自HTML表单的条目,该表单由
组成我想根据从date_of_entry中选择的有效期
,在30/90天之后删除该行并将其删除我发现了这个,但我如何修改它以满足我的需要
DELETE FROM myTable WHERE date_of_entry < DATEADD(MONTH, -1, GETDATE())
另请注意,我使用的表单的有效期为30或90 $duration = $_POST['duration'];
此检查应由MySQL本身执行。我正在使用phpMyAdmin
答案 0 :(得分:2)
基本上,您必须以这种方式删除当前日期超过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 here
答案 1 :(得分:0)
在MySQL中你会做类似的事情:
delete t from mytable t
where date_of_entry < curdate() - interval validity day;
这假设validity
是数字30或90。
答案 2 :(得分:0)
DELETE FROM mytable WHERE date_of_entry <
DATE_ADD( CURDATE() ,INTERVAL validity*-1 DAY) ;