我想过滤旧记录并仅提供较新记录。这个想法是currentDate减去2年。一条记录看起来像这样(表专题讨论会):
属性:
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 :(得分:2)
您可以使用STR_TO_DATE function和DATE_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,所以我无法测试它,但除非有一些非常基本的拼写错误,它应该可以工作)