The Select function takes a test method which it applies to each element in turn, keeping only those that pass the test. So, you could first define a test function:
NoDateObject[a_] := Not[MemberQ[a, _DateObject]]
Then we can simply incorporate this into a Select:
Select[testList, NoDateObject]
This returns {{"a",17}}, which isn’t exactly what you wanted above. If you want to keep the sublist structure, then you’d stop here. If you really do want a flat list, then apply Flatten to the result of the Select.
Hi David, thank you for Nothing! I will take your idea, because it has a slightly better performance (I’ am working with a list of 40,000 entries). Thank you very much!