删除列中超过 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 天的所有行的过程的主要内容,如果未能解决你的问题,请参考以下文章
致命错误:第 306 行的 /var/www/html/central/system/database/drivers/mysqli/mysqli_driver.php 中超过了 30 秒的最大执行时