Если в вашем случае значение "0000-00-00" имеет некоторый логический смысл, то вы можете изменить вывод результата запроса для значения "0000-00-00" на символ бесконечности при помощи оператора CASE
Документация
Вот пример использования данного оператора на основе вашего запроса:
SELECT CASE exp_date WHEN '0000-00-00' THEN '∞' ELSE exp_date END AS exp_date
FROM ?
WHERE lvl = 1
Но будьте осторожны, так как согласно документации допустимыми значения для поля DATE являются значения от '1000-01-01' до '9999-12-31'.
Вариант использования '0000-00-00' является исключением известным как "нулевая дата" и строго не рекомендуется к сознательному использованию в качестве допустимого значения.
Так например все значения, которые при вставке имеют неправильный формат даты в случае установленного режима ALLOW_INVALID_DATES будет конвертировать все некорректные даты в значение "0000-00-00".
Также мне известно, что в случае использования ODBC-драйвера, то он не поддерживает некорректные значения даты (только от '1000-01-01' до '9999-12-31') и может по-другомувести себя с такой ситуации.
Вот выдержка из документации:
Для столбцов DATE и DATETIME, объявленных как NOT NULL, вы можете найти специальную дату "0000-00-00", используя следующую инструкцию:
SELECT * FROM tbl_name WHERE date_column IS NULL
Это необходимо для работы некоторых приложений ODBC, поскольку ODBC не поддерживает значение даты 0000-00-00.
Поэтому
настоятельно рекомендую либо прислушайтесь к совету
Иван,
либо же выберите некоторые дату из допустимого диапазона значений, которая будет обозначать "бесконечность" или иной смысл для решения вашей задачи.