从MySQL表中获取更新的记录,按日期属性过滤

时间:2012-10-26 07:51:11

标签: mysql

我想过滤旧记录并仅提供较新记录。这个想法是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个表,由这些属性构建。所以不建议更换表格。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分: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,所以我无法测试它,但除非有一些非常基本的拼写错误,它应该可以工作)