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

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

【问题讨论】:

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

标签: mysql sql-delete


【解决方案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 列的所有表都需要它
猜你喜欢
  • 2018-08-24
  • 2018-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-18
相关资源
最近更新 更多