An empty date really is empty, it’s just that we treat it as the smallest possible date as well for comparisons. I see that you likely have some experience querying databases since you used the <> notation, but most of our user don’t. So a long time ago we needed to decide what to do with empty values and we decided to step away from how SQL and the likes work, and instead sought for a way that non-technical users would understand better. What for example should be the result of adding 1 to nothing? In SQL the result will be NULL, but if you have no experience with SQL, the more intuitive result is that the outcome is 1. Therefore it also makes sense that “nothing” is smaller than 1. For consistency, we applied the same thing to dates, so users can apply what they’ve learned to all places where they can use larger-than and smaller-than operators.
That does indeed mean that you need to make the additional “date is not empty” check if you only want dates that are filled in and smaller than the date you’re comparing it with. We will evaluate your proposal as we do with all suggestions made here, but please now that this is not a small change, as it means that people will need to update their comparisons in hundreds of applications and that for many people, it will likely be less intuitive.