2012-10-26 64 views
0

我想過濾掉舊記錄並僅顯示較新的記錄。這個想法是currentDate減去2年。一個記錄是這樣的(表研討會):從MySQL表中獲取只有更新的記錄,按日期屬性過濾

屬性:

ID;Day;Month;Year;Firstname;Lastname;Symposium_title;Speakers; 

記錄

1;26;10;2012;Markus;Meier;Topic MySQL;5; 
3;26;10;2011;Markus;Meier;Topic PHP;5; 
6;26;01;2010;Markus;Meier;Topic CSS;5; 

祝願輸出

1;26;10;2012;Markus;Meier;Topic MySQL;5; 
3;26;10;2011;Markus;Meier;Topic PHP;5; 

我可以很容易地做一個小的PHP來過濾掉較舊的數據,但我確信有一種方法可以在一個命令中直接使用mysql。

一些像這樣的查詢(這僅僅是僞代碼)

SELECT * FROM Symposium WHERE (current_data() - 2 Years); 

備註:該屬性的一天,一個月,一年內不會改變。有超過50個表,由這個屬性構建。所以不建議更改表格。

有人可以幫助我嗎?

+0

@jade:他不需要所有其他數據。問題不在於排序,而是過濾它。 – ppeterka

回答

2

您可以使用STR_TO_DATE functionDATE_ADD這個任務:

語法:

STR_TO_DATE(string, format) 

因此,在你的代碼:

SELECT * from Symposium 
WHERE DATE_ADD(STR_TO_DATE(concat(Day,'-',Month,'-',Year),'%d-%m-%Y'), INTERVAL 2 YEAR) > NOW(); 

(可悲的是,我沒有在MySQL的現在手,所以我不能測試它,但除非有一些非常基本的錯字,它應該工作)

+0

謝謝,我現在就試試吧。讓你知道。 –

+0

很好,它很有用!謝謝。 –