Я думаю, что ваш вопрос относится к "второму утверждению" в запросе SQL?
При таком предположении проблема удаления всех строк со статусом «выполнено» заключается в том, что фильтры WHERE похожи на условные операторы, подобные тем, которые используются в операторах «If».
Если первый оператор или фильтр WHERE имеет значение true, тогда выполнить.
Попробуйте сделать следующее:
$old = time() - 2592000;
$sql_deleteold = ("DELETE FROM todolist WHERE (status='done' AND stamp < $old)");
mysql_query($sql_deleteold);
Вы также можете проверить значение $ old и сравнить его со значениями в поле 'stamp' вашей таблицы, чтобы убедиться, что в строке 'stamp' есть строки, имеющие значение больше, чем значение $ old.