2012-04-17 7 views
5

現在の日付/時刻または現在のタイムスタンプよりも古いタイムスタンプのデータベースのテーブルからすべての行を削除できるクエリを探しています。MySQLタイムスタンプが現在のタイムスタンプより古い行を削除するクエリ

ここで急いで助けていただければ幸いです!

ここで私が使用していたクエリですが、私は思ったとして、それが動作していません。

delete from events where timestamp<CURRENT_TIMESTAMP{); 

答えて

8
delete from events where timestamp < NOW() 

が十分でなければなりません。

+0

を迅速に返信してくれてありがとうをそれが動作していません!タイムスタンプが現在の時刻/現在の日付/時刻 – Arihant

+0

より古いのではないにもかかわらず、すべてのレコードを削除すると、タイムスタンプが現在の時刻よりも大きいことを意味する「古い」と表示されますか?ステートメントをタイムスタンプ> NOW()に変更する必要があります –

1
DELETE FROM events WHERE timestamp < UNIX_TIMESTAMP(NOW()) 

か、それは標準のdatetime

DELETE FROM events WHERE timestamp < NOW() 
+0

クイック返信ありがとうございますが、それは動作していません!タイムスタンプが現在の時刻/日付より古いのではないにもかかわらず、すべてのレコードを削除する – Arihant

+0

削除を選択タイムスタンプに変えます。結果セットに含まれてはならないタイムスタンプ値をいくつか表示できますか?また、SELECT NOW()を実行します。 –

21

かどううーん...これが愚かに見えるかもしれませんが、テーブル内のすべてのレコードは今()がで計算されているので、)(今よりも古いとなりますクエリが処理される時間。別のレコードよりも古いレコードを削除する場合は、Now()を使用するのではなく、残りのレコードと比較するレコードのタイムスタンプを使用します。特定の時点よりも古いレコードを削除する場合は、比較に使用するタイムスタンプを計算する必要があります。例えば10月(時間内の特定のポイントの場合

DELETE FROM events WHERE timestamp < (NOW() - INTERVAL 1 DAY) 

DELETE FROM events WHERE timestamp < (NOW() - INTERVAL 10 MINUTE) 

あるいは、一日かけて古いレコードを削除するため:例えば、10分よりも古いレコードを削除するために、あなたはこれを使用することができます。12th、2012 at 4:15:00 GMT)、それを行う方法がありますが、構文が私をエスケープしています。私のMySQLマニュアルはどこですか? :)

+2

数値のPHPタイムスタンプを使用した場合は、この特別な関数 'UNIX_TIMESTAMP(NOW() - INTERVAL 1 YEAR);)が必要です。 –

-3
DELETE FROM table WHERE date < '2011-09-21 08:21:22'; 
1

休止状態(HQL)、私はわかりませんが、あなたはこの試みることができる7日間

よりも古いレコードを削除します

String hqlQuery = "from PasswordHistory pwh " 
      + "where pwh.created_date < datediff(curdate(), INTERVAL 7 DAY)"; 

      List<Long> userList = (List<Long>)find(hqlQuery); 
    deleteAll(userList);// from baseDao 

public void deleteAll(Collection list) { 
     getHibernateTemplate().deleteAll(list); 
    } 
関連する問題