我有一个包含多个表的数据库。这些表中的每一个都有一个'创建'列,其中包含在数据库中创建特定行时的时间戳。检查时间戳,如果他们从今天起在MySQL
现在,我想创建一个MySQL脚本,每星期,如果有数据进入这些表来检查一次。所以,每天都应该有数据。我如何创建一个MySQL脚本,允许我为数据库中的所有表执行此操作?
注意:请记住我想对所有在数据库中一个脚本表做到这一点。这是我想知道的主要事情。
我有一个包含多个表的数据库。这些表中的每一个都有一个'创建'列,其中包含在数据库中创建特定行时的时间戳。检查时间戳,如果他们从今天起在MySQL
现在,我想创建一个MySQL脚本,每星期,如果有数据进入这些表来检查一次。所以,每天都应该有数据。我如何创建一个MySQL脚本,允许我为数据库中的所有表执行此操作?
注意:请记住我想对所有在数据库中一个脚本表做到这一点。这是我想知道的主要事情。
我用这个方法一个名为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个结果,你会知道每天至少有一个输入。
感谢您的回答。我也想对所有的桌子进行检查。没有这样做的方法,而不必为所有表创建这些表中的一个,因为它们都具有该时间戳字段? – sfactor
如果你知道表的名字,你可以使用UNION。但是,如果您使用union,那么您如何知道每个**表是否有条目(即可能发生只有其中一个条目已更新)?最好的方法是用你用来访问mysql的编程语言来执行此操作,执行SHOW TABLES mysql查询,并为每个列出的表格运行上面的脚本。 –
select * from table
where created between subdate(current_date, interval 7 day) and current_date;
选择日期时间长达current_date
包括一切上升到“今天”(即“前一天午夜12”)的开始。
我不知道任何解决方案一次从所有表中选择,如果他们有未知名称。在[这](http://stackoverflow.com/questions/3571894/select-from-all-tables/3571943#3571943)问题OP找到了一个解决方案,但它依赖于他使用的编程语言。而不是MySQL脚本本身。 –