我有一個巨大的數據庫和某個表中的某個地方,有一個datetime格式的字段,該格式被「0000-00-00 00:00:00」值損壞。在整個MySQL數據庫中搜索日期「0000-00-00 00:00:00」?
我該如何查詢,它會搜索給定的日期時間值ex。 「0000-00-00 00:00:00」在整個數據庫中的所有表和所有列和行?
我有一個巨大的數據庫和某個表中的某個地方,有一個datetime格式的字段,該格式被「0000-00-00 00:00:00」值損壞。在整個MySQL數據庫中搜索日期「0000-00-00 00:00:00」?
我該如何查詢,它會搜索給定的日期時間值ex。 「0000-00-00 00:00:00」在整個數據庫中的所有表和所有列和行?
你可以嘗試
SELECT TOP 1(*)FROM yourTable ORDER BY yourDateTimeColumn
頂部1行也許應該是一個與你正在尋找
BTW的價值,我認爲SQL日期不早於1900
With plain mysql我認爲沒有辦法。所以這取決於你有可用的編程語言。 OFC。每一種語言的支持MySQL的原生指令,這樣可以讓你寫一個腳本執行所需的搜索:
首先,你需要獲取所有表:
SHOW TABLES
https://dev.mysql.com/doc/refman/5.0/en/show-tables.html
然後,在第一個循環過程中的每個表,檢索當前表的所有列:
SHOW COLUMNS FROM tableName WHERE TYPE = 'date' -- Maybe you use other types?
https://dev.mysql.com/doc/refman/5.0/en/show-columns.html
最後,你可以使用外價值的tablename與內價值COLUMNNAME一起檢索結果,你正在尋找:
SELECT * from tableName WHERE columnName = '0000-00-00 00:00:00';
所以,腳本明智它可能看起來像這樣(僞代碼):
$tables = query("SHOW TABLES");
foreach($tables as $tableName){
$columns = query("SHOW COLUMNS FROM $tableName WHERE TYPE = 'date'");
foreach ($columns AS $columnName) {
$res = query("SELECT * from $tableName WHERE $columnName = '0000-00-00 00:00:00';");
foreach ($res AS $row){
echo "Table $tableName has a invalid date in column $columnName for row {$row["id"]}";
}
}
}
我有一個龐大的數據庫,有很多表。不想手動搜索它。 –