Я хочу только время, чтобы сравнить с другой строкой времени, поэтому я использую функцию STR_TO_DATE
чтобы преобразовать мою временную строку в формат даты
Ниже оператор работает отлично для меня, поэтому я думаю, что MySQL не имеет никаких проблем
SELECT STR_TO_DATE('26/04/2011', '%d/%m/%Y');
Но я не знаю, почему ниже один не работает для меня
SELECT STR_TO_DATE('11:59:59','%h:%i:%s');
Выше инструкция всегда возвращает NULL, когда я запускаю в консоли SQL PhpMyAdmin
Это действительно из-за режима SQL NO_ZERO_DATE
. Вы должны были видеть это, когда Ананд Рокзз связан с руководством, но эта ссылка является лишь половиной объяснения. Начиная с MySQL 5.7.4, этот параметр устарел. В первом примере вы устанавливаете дату; во втором, NO_ZERO_DATE
вызывает возврат NULL, потому что вы не указываете дату. Начиная с 5.7.8, NO_ZERO_DATE
и NO_ZERO_IN_DATE
были включены со значением sql_mode по умолчанию. Согласно руководству , кажется, что отмена и удаление частично отменены (начиная с 5.7.8), поэтому вы можете явно установить это в my.cnf
(или в сеансе).
Вы также должны обратиться к руководству относительно директивы NO_ZERO_DATE .