删除列中超过 30 天的所有行的过程

Posted

技术标签:

【中文标题】删除列中超过 30 天的所有行的过程【英文标题】:Procedure to delete all rows in a column older than 30 days 【发布时间】:2011-10-18 16:58:44 【问题描述】:

谁能帮帮我 编写一个过程/函数以从名为的列中删除超过 30 天的行 prs_date 来自 mysql 数据库中的所有表?

【问题讨论】:

到目前为止你尝试过什么?你为什么不成功?说实话似乎并不难...... 这会阻止您使用谷歌搜索吗?如果您在您的标题上使用 Google 搜索,您将能够自己通过前 2 个链接在答案中进行查询。那么你就已经拥有了一些东西而不是一无所有。 【参考方案1】:

查看DATEDIFF 运算符并将其与CURDATE() 结合使用

DELETE FROM myTable WHERE DATEDIFF(CURDATE(), prs_date) > 30;

【讨论】:

这里我必须从所有表中选择一个特定的列 哦。很抱歉错过了all tables 的部分。 @Marcus 会有很多表,所以很难搜索n写每个表名,所以我要求一个函数或过程。 我希望创建一个程序很容易 是否可以手动指定每个包含prs_date的表?否则它会变得有点复杂。【参考方案2】:

这个查询可以帮助

DELETE FROM sometable WHERE TO_DAYS(NOW()) - TO_DAYS(prs_date) <= 30;

【讨论】:

我需要写一个过程/函数 它会删除,但我的数据库中包含 prs_date 列的所有表都需要它

以上是关于删除列中超过 30 天的所有行的过程的主要内容,如果未能解决你的问题,请参考以下文章