mysql - 按时间定义的存储过程

标签 mysql

我对编程还很陌生。到目前为止一切都很顺利,但我无法解决这个问题。我正在使用 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/

相关文章:

MYSQL ERROR 1248 我卡住了

MySQL使用select in or子句的结果

php - 在单个表上组合 2 个 sql 语句

mysql - 选择按另一个属性分组的促销项目

mysql - SQL - 字段除以另一个字段的频率后按比例输出

mysql - 检查表中是否存在用户 ID,然后更新,否则插入 mysql 版本 5.7.15

php - 可笑的慢学说查询

mysql - 数据库设计: what fields are must for a user table in database?

php - 使用 PHP 在 mysql 表中搜索标签

mysql - WHERE 中的 SQL GROUP_CONCAT 别名