STR_TO_DATE возвращает будущие даты для двузначных лет - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть таблица SQL с датами в формате 12/9/66 (формат даты в Великобритании, дд / мм / гг). Когда я использую:

UPDATE players SET dateOfBirth = STR_TO_DATE('12/9/66','%d/%m/%y')

Устанавливает дату как 2066-09-12.

Очевидно, я хочу, чтобы это было 1966-09-12. Как мне получить правильную дату?

1 Ответ

0 голосов
/ 06 ноября 2018

Вы можете проверить, привело ли STR_TO_DATE к будущей дате ( почему ), а затем вычесть 100 лет:

UPDATE players
SET dateOfBirth = STR_TO_DATE('12/9/66','%d/%m/%y') - INTERVAL (
    CASE WHEN STR_TO_DATE('12/9/66','%d/%m/%y') <= CURRENT_DATE THEN 0 ELSE 100 END
) YEAR
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...