В первый раз я вижу это поведение sql. Я понятия не имею, как проверить или что делать. После нового года одна из наших систем начала делать странные вещи. Я нашел этот код в системе нашей компании
SELECT masinu_galiojimai. * ,
galiojimu_tipai.pavadinimas,
galiojimu_tipai.ispeti_pries_x_dienu,
masinos.masinos_nr AS masina,
IF( DATEDIFF( masinu_galiojimai.galioja_iki, CURDATE( ) ) <0, "baigesi", 2 *2 ) AS liko
FROM masinos
LEFT JOIN masinu_galiojimai ON masinu_galiojimai.masinos_id = masinos.id
LEFT JOIN galiojimu_tipai ON masinu_galiojimai.ispejimo_id = galiojimu_tipai.id
как вы можете видеть, это очень логично, если TRUE выдает слово: baigesi, а если false, то должно вычислять 2 * 2 (я изменил это сам, чтобы проверить)
и в результате я получаю, что 2 * 2 не 4, а 62616967657369. Как это вообще возможно? Если я попытаюсь вычесть сегодняшнюю дату и 2018-12-31, я получу не 13 дней, а 8880.
Сервер работает хорошо, проблем нет. С чего мне начинать проверку или как?
РЕДАКТИРОВАТЬ: чтобы лучше понять, я включаю фото. Как видите, нет слова baigese и нет правильного математического ответа:
Вложение изображения