我对编程还很陌生。到目前为止一切都很顺利,但我无法解决这个问题。我正在使用 MySQL Workbench 5.2.42
我知道我需要创建一个存储过程
此过程需要删除数据库中的所有数据,但前提是数据已存在超过 15 分钟。我可以从 ExpectedEnd
列中的时间戳访问时间。但我不知道如何正确地做到这一点。
CREATE PROCEDURE p_DeleteOldData()
BEGIN
IF ExpectedEnd IS TIMESTAMP + 15
DELETE * tables FROM (DelayedLoading, Loading, LoadingDock, LoadingError, Orders, PartOrders, Semi, Trailer, Truck, Weighing)
End ;
我做了这个,但它肯定是完全错误的。
编辑*
我尝试过这个,但我仍然不知道如何让它达到 15 分钟标记并删除。
CREATE PROCEDURE p_DeleteOldData(IN theTime DATETIME)
BEGIN
DELETE FROM Loading WHERE ExpectedEnd < theTime;
END;
提前谢谢您。
最佳答案
CREATE PROCEDURE p_DeleteOldData(IN theTime DATETIME)
BEGIN
DELETE FROM Loading WHERE ExpectedEnd < DATE_ADD(theTime, INTERVAL -15 MINUTE);
END;
您可以查看其他interval values in the docs (例如 HOUR、DAY、WEEK、MONTH),如果您只查看当前时间点,您甚至可以只使用 NOW() 而不必将时间值传递到存储过程中
关于mysql - 按时间定义的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16818341/