With plain mysql I think there is no way. So it depends on the programming language you have available. Ofc. every language is supporting native commands of mysql, which would allow you to write a script performing the required search:
First, you need to fetch all tables:
SHOW TABLES
https://dev.mysql.com/doc/refman/5.0/en/show-tables.html
Then, in the first loop process every table, retrieving all the columns of the current table:
SHOW COLUMNS FROM tableName WHERE TYPE = 'date' -- Maybe you use other types?
https://dev.mysql.com/doc/refman/5.0/en/show-columns.html
Finally, you could use the outer value tableName along with the inner value columnName to retrieve the result, you are seeking for:
SELECT * from tableName WHERE columnName = '0000-00-00 00:00:00';
So, Script wise it might look like this (pseudocode):
$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"]}";
}
}
}