2011-08-18 60 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」)的開始。

相關問題