删除列中超过 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 天的所有行的过程的主要内容,如果未能解决你的问题,请参考以下文章

CMD 删除特定文件夹中超过 X 天的文件

删除Qube中超过10天的作业

致命错误:第 306 行的 /var/www/html/central/system/database/drivers/mysqli/mysqli_driver.php 中超过了 30 秒的最大执行时

删除所有超过30天的文件

Android中超过30000张图片的快速删除文件夹

MYSQL利用事件和存储过程实现执行定时任务