2016-03-25 7 views
1

したがって、2年以上経過しているシステムからデータを消去したいとします。MYSQLは2年以上古いデータを選択します

私は、私が保管する日時フィールドを持っています。

は私が

SELECT * FROM `table` where date_field < (??? what goes here) 

私の問題のような何かを行うことができます知っている私は、私は日付を計算し、または多分私は

+0

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-addが役立ちます。 'DATE_ADD(date、INTERVAL expr unit)'、 'DATE_SUB(date、INTERVAL expr unit')と' now() 'を組み合わせて使用​​します。また:http://stackoverflow.com/questions/3887509/mysqls-now-1-day – xQbert

+0

あなたは> 2年を使用する必要はありませんか?代わりに<あれ? – xQbert

答えて

4

使用DATE_SUB

SELECT * FROM `table` 
where date_field < DATE_SUB(CURDATE(), INTERVAL 2 YEAR) 
+2

それについては<?あなたは>を意味しないのですか? – xQbert

+2

彼は2年前の日付を探していませんか?したがって、正しいデータと一致するように、dateFieldは-2より小さくする必要があります。@xQbert – baao

+2

あなたは正しいです!質問 – xQbert

4

混乱していますどのように考えていますマニュアルが十分明確でない場合の具体的な回答:

SELECT * FROM `table` where date_field < (now() - interval 2 year) 
3

これは助けることができることがあります。

SELECT EXTRACT(YEAR FROM `date`) AS year 
from table 
having year< (EXTRACT(YEAR from CURDATE())-2) 
1

SELECT * DATE_FIELD < DATE_SUB(NOW()、INTERVAL 2 YEAR)table FROM。

+0

を読んでください。その単純な、date_sub()内のnow()関数を使用してください。 –

関連する問題