2017-10-22 19 views
0

13ヶ月間のデータを保持し、13ヶ月以上経過したデータを削除し、1ヶ月分のデータを保持する必要があります。 13ヶ月のローリングを維持しながら部分的な月データを削除しないでください。だから私の削除日が1以外の場合、私は月間データ全体を保存します。 (質問が最初にタグ付けされたように)MySQLでは、次のようになり、この13か月以上経過したデータを削除して部分的な月データを削除しない

+1

データを表すサンプルコードとコーディングの試行を行う必要があります。 – Zorkolot

答えて

0

delete文のSQLクエリを書くことについてのヘルプが必要です:SQL Serverで

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

を、それが見えるように:

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

もちろん、これをテストする前にデータをコピーしてください。注意の

2つのノート:

  1. 私はデータを削除することは非常に消極的です。古いデータをテーブルに残すことの害は何か。
  2. 一度に1か月にデータを削除する必要がある場合は、代わりにパーティションを調べてパーティションを削除する必要があります。パーティションを削除する方がはるかに効率的です。
関連する問題