我有一個包含多個表的數據庫。這些表中的每一個都有一個'創建'列,其中包含在數據庫中創建特定行時的時間戳。檢查時間戳,如果他們從今天起在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腳本本身。 –