0

我想过滤掉旧记录,只显示较新的记录。这个想法是 currentDate 减去 2 年。一条记录如下所示(表 Symposium):

属性:

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 个表,是由这个属性建立的。所以不建议换表。

有人能帮我吗 ?

4

1 回答 1

2

您可以为此任务使用STR_TO_DATE 函数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();

(sadly, I don't have a MySQL at hand right now, so I can't test it, but unless there is some very basic typo in it, it should work)

于 2012-10-26T07:54:53.223 回答