there is a wordpress plugin named 'Bulk Delete' that deletes the posts in bulk based on the categories, tags or custom taxonomies.
If you want to try the SQL route, the following four queries should delete the posts you want to delete, plus any comments attached to them: DELETE FROM wp_commentmeta
WHERE comment_id IN (
SELECT comment_ID FROM wp_comments
WHERE comment_post_ID IN (
SELECT ID FROM wp_posts
WHERE post_category = 9 AND post_date < '2010-01-01'));
DELETE FROM wp_comments
WHERE comment_post_ID IN (
SELECT ID FROM wp_posts
WHERE post_category = 9 AND post_date < '2010-01-01');
DELETE FROM wp_postmeta
WHERE post_id IN (
SELECT ID FROM wp_posts
WHERE post_category = 9 AND post_date < '2010-01-01');
DELETE FROM wp_posts
WHERE post_category = 9 AND post_date < '2010-01-01';This will permanently delete the relevant posts and comments. There is no recovering the data you delete this way. BACK UP YOUR DATABASE BEFORE YOU DELETE ANYTHING.
Also use the plugin 'Redirecting error 404 to Homepage' so that all the error posts will be redirected to homepage.
You can also try 'advanced permalink' plugin which redirects all the broken old posts to the correct new posts.