MySQL Версия: 8.0.18 Кодировка: utf8mb4 Сортировка: utf8mb4_unicode_ci
Я собираю набор правил, который преобразует «существующие» записи даты в запись DATE (поскольку мы храним даты как фактическую DATE типы данных, а не текст).
При этом я обнаружил нечто ОЧЕНЬ странное. Я хотел набор правил, где 00-00-2020 (например) будет представлять «настоящее».
Когда я выполняю это:
SELECT date(CONCAT(YEAR(NOW()),'-00-00'));
В результате получается «0/0/2020» как значение результата DATE.
Однако, когда я выполняю это в своей ХРАНЕННОЙ ПРОЦЕДУРЕ:
SET out_result_formatted_date = CONCAT(YEAR(NOW()),'-00-00');
Результатом всегда является «1/1/0001». Обратите внимание, что out_result_formatted_date имеет тип DATE. Также обратите внимание, что если я поставлю DATE перед CONCAT (хранимой процедуры), результат будет таким же.