2011-08-18 64 views
1

我有一个包含多个表的数据库。这些表中的每一个都有一个'创建'列,其中包含在数据库中创建特定行时的时间戳。检查时间戳,如果他们从今天起在MySQL

现在,我想创建一个MySQL脚本,每星期,如果有数据进入这些表来检查一次。所以,每天都应该有数据。我如何创建一个MySQL脚本,允许我为数据库中的所有表执行此操作?

注意:请记住我想对所有在数据库中一个脚本表做到这一点。这是我想知道的主要事情。

+0

我不知道任何解决方案一次从所有表中选择,如果他们有未知名称。在[这](http://stackoverflow.com/questions/3571894/select-from-all-tables/3571943#3571943)问题OP找到了一个解决方案,但它依赖于他使用的编程语言。而不是MySQL脚本本身。 –

回答

1

我用这个方法一个名为call表,一个名为systemdate时间戳类型的列:

SELECT * FROM `call` WHERE DATE(`systemdate`) = DATE(NOW()); 

mysql DATE() statement得到一个日期时间或时间戳字段的日期部分。

对不起,刚才注意到您要检查是否ATLEAST有前一周为每个工作日的条目。

您可以使用此查询单独检查prevous天:

昨天:

SELECT * FROM `call` WHERE DATE(`systemdate`) = DATE(NOW()) - 1; 

前天:

SELECT * FROM `call` WHERE DATE(`systemdate`) = DATE(NOW()) - 2; 

或者你可以一次检查整个周:

SELECT * FROM `call` WHERE DATE(`systemdate`) > DATE_SUB(CURDATE(), INTERVAL 7 DAY) GROUP BY DATE(`systemdate`); 

这会每天返回一个结果,所以如果你有7个结果,你会知道每天至少有一个输入。

+0

感谢您的回答。我也想对所有的桌子进行检查。没有这样做的方法,而不必为所有表创建这些表中的一个,因为它们都具有该时间戳字段? – sfactor

+0

如果你知道表的名字,你可以使用UNION。但是,如果您使用union,那么您如何知道每个**表是否有条目(即可能发生只有其中一个条目已更新)?最好的方法是用你用来访问mysql的编程语言来执行此操作,执行SHOW TABLES mysql查询,并为每个列出的表格运行上面的脚本。 –

0
select * from table 
where created between subdate(current_date, interval 7 day) and current_date; 

选择日期时间长达current_date包括一切上升到“今天”(即“前一天午夜12”)的开始。