Насчёт "дат как строк" я узнал в далёком ннадцатом году, когда эти строки в виде переменных сравнивали мои коллеги по цеху. Примерно вот так:
$dateBegin = '2001-01-01';
$dateEnd = '2001-02-01';
...
if ( $dateBegin >= $dateEnd ) ...
От этого мой мозг перестал сомневаться что наш мир - это матрица.
А в итоге, все корни оказались зарыты в тех версиях php на которых были написаны первые версии джумл, друпалов и вордпрессов.
И в них, были массы таких конструкций. И разработчики php сделали костыль вида "если строка выглядит как дата - то это и есть дата и сравнивать их нужно как даты". Такие дела.
Но, вроде как, побайтовое сравнение строк по ASCII символам имеет похожее поведение.
Мы даже, кажется, обсуждали похожий вопрос в каком-то чатике.