Задать вопрос
Ответы пользователя по тегу MySQL
  • Как доработать запрос mysql чтоб он не смотрел на даты 0000-00-00?

    kagary06
    @kagary06
    Человек
    Если в вашем случае значение "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.


    Поэтому настоятельно рекомендую либо прислушайтесь к совету Иван,
    либо же выберите некоторые дату из допустимого диапазона значений, которая будет обозначать "бесконечность" или иной смысл для решения вашей задачи.
    Ответ написан
    Комментировать