【问题标题】:Delete data older than 13 months not dropping partial months data删除超过 13 个月的数据而不删除部分月份数据
【发布时间】:2017-10-22 12:33:54
【问题描述】:

需要保留滚动13个月的数据,删除超过13个月的数据,保留完整的月数据。在保持滚动 13 个月的同时不应删除部分月份数据。因此,如果我的删除日期不是 1,我将保留整个月份的数据。需要帮助为此编写 SQL 查询

【问题讨论】:

  • 您需要提供代表您的数据的示例代码,以及您的编码尝试。

标签: sql sql-server


【解决方案1】:

delete 语句在 MySQL 中看起来像这样(因为问题最初被标记):

delete from t
    where datecol < date_add(date_add(curdate(), interval (1 - day(curdate())) day), interval -13 month);

在 SQL Server 中,它看起来像:

delete from t
    where datecol < dateadd(month, -13,
                            dateadd(day, 1 - day(getdate()),
                                    cast(getdate() as date)
                                   )
                           )

当然,在测试之前复制你的数据。

注意两点:

  1. 我非常不愿意删除数据。将旧数据留在表中有什么害处。
  2. 如果您确实需要一次删除数据一个月,那么您应该考虑分区并改为删除分区。删除分区效率更高。

【讨论】:

    猜你喜欢
    • 2022-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 2021-10-11
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多