'24:00:00'
- это , а не действительный компонент времени для литерала DATETIME.
Спецификация формата должна соответствовать строке. Список допустимых спецификаторов задокументирован в функции DATE_FORMAT
, на которую ссылается документация для функции STR_TO_DATE
на той же странице.
Ссылка:
https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date -формат
Формат этого первого значения может быть указан как '%Y-%m-%d %h %H:%i:%s'
или более кратко, как '%Y-%m-%d %T'
Нам не нужно использовать функцию STR_TO_DATE
, когда литералы даты поставляются в формате по умолчанию; MySQL выполнит преобразование в DATETIME неявно.
Мы могли бы сделать это:
... VALUES ('2020-01-10 18:00:00','2020-01-11 00:00:00')
Или, если мы хотим использовать STR_TO_DATE
, мы указываем формат которая соответствует нашей строке
... VALUES( STR_TO_DATE('2020-01-10 18:00:00','%Y-%m-%d %T')
, STR_TO_DATE('2020-01-11 00:00:00','%Y-%m-%d %T')
)
^^^^^^^^^^^^