【问题标题】:is it possible to find out how much of the db data is older than some N years in SQL Server?是否可以在 SQL Server 中找出有多少数据库数据比 N 年旧?
【发布时间】:2013-06-03 08:13:26
【问题描述】:

我在 SQL Server 中有两个数据库。我想找出早于(比如说 3)年的数据。

我知道数据库创建日期,目前我有大约 550 GB(两个数据库)的数据跨越 7 年,我想知道“有多少数据库数据(总共 550 GB)超过 3年或(5 年)'?

我正在浏览此链接,但无法获得预期的数据。

SQL SERVER – Query to find number Rows, Columns, ByteSize for each table in the current database – Find Biggest Table in Database

我现在想到的一个解决方案是找出占7年的总行数(很容易得到这个数字),占5年的总行数(从创建日期开始)(don '不知道如何得到这个号码)。

那么对于 row_count_7_years 占 550 GB 的数据,row_count_5_years 是多少?我会得到大概的数据。

请帮忙

【问题讨论】:

  • 您的表中必须有某种DateDateTime 列,以便能够判断数据的年龄。
  • 或时间跨度数据类型列

标签: sql sql-server database sql-server-2008 sql-server-2005


【解决方案1】:

出于此类目的,您应该保留一些日期时间字段,如 marc 所述。我想你没有。

在您建议的解决方案中,您可以从表中获取全部行数(我想是 7 年),但您将无法在 5 年内获取这些行,因为没有日期。

您可以获得7年的全部记录并按年数划分,只有在您的数据库平均完成的情况下,您才能查询top(一年内的numberOFRows)*5并排序他们通过row_number()。结果 - 您应该删除的行。但我不建议您使用此解决方案。

我建议您更改表格并为每个表格添加日期时间列。在此之前,您应该对整个日期进行备份并将其复制到某处。 3 年后,您将能够进行清理。

【讨论】:

    【解决方案2】:

    如上所述,你应该有一个日期列,但是如果你没有,根据你表中的关系,你可能能够估计与其他一些具有日期时间列的表查找关系的行数,否则如果你有一个备份(不太可能但仍然)你可以恢复它来识别增量

    【讨论】:

      最近更新 更多