Странный расчет времени в MySQL при сложении / вычитании месяцев - PullRequest
1 голос
/ 30 сентября 2019

Я пытаюсь выполнить некоторые расчеты времени (timestampadd, timestampdiff) для запроса, но я застрял с неожиданным поведением.

Я выполнил в mysql этот запрос:

select timestampdiff(MONTH, timestampadd(MONTH, 1, '2017-01-30'),'2017-01-30')

Использование логики добавляет к 2017-01-30 один месяц, а затем запрашивает разницу в месяцах между этой датой и снова 2017-01-30.

Я ожидаю, что результат будет тривиальным и равнымв 1, но вместо этого предыдущий запрос оценивается в 0.

Это приводит к моим вычислениям

Почему это?

1 Ответ

4 голосов
/ 30 сентября 2019

Это просто, вы добавляете 1 месяц в 30 января, который будет 28 февраля, как в 2017 году

, теперь разница между 30 января и 28 февраля составляет всего 29 дней, что меньше значения месяца. (30 дней)

Таким образом, его точность 0

, вы должны обращаться с февралем осторожно.

...