Есть проблема... Например: В PHP: $time = strtotime('2019-01-31 00:00:00'); strtotime('1 month', $time) вернёт дату '2019-03-03' (т.е. 3-ье марта, время не важно в данном случае). В MySQL: select '2019-01-31' + interval 1 month вернёт дату '2019-02-28' Всегда считал, что MySQL-шный правильный. А вот сейчас что-то задумался, - может я был не прав. Какой же вариант всё-таки правильный?
@MouseZver, тут ведь не три часа. @Chushkin, такая вот особенность php в совокупности с февралём. Подробнее: Как на PHP корректно прибавить месяц к дате --- Добавлено --- А "правильность" определяется в ТЗ. Где-то при добавлении месяца к 30 января должно получиться 1 марта, а где-то - 28 или 29 февраля...
@Chushkin правильность зависит от конкретных требований. Чисто субъективно мне вариант MySql нравится больше. Такие особенности придется помнить, чтобы не наступить на грабли. Надо бы составить таблицу MySql + strtotime + DateTime::add
Для справки (кто не знает): у DateTime есть метод modify(), - работает также, как strtotime(). Т.е. с тем же глюком, если это глюк.
Вы то сами чего ожидали? 31 февраля? Это машина и она прибавляет не месяц, а количество дней, которое в исходном месяце. Никакого глюка тут нет. Понятие "месяц" неоднозначное. PHP: $date->modify('first day of')->modify('+1 month')->modify('last day of'); еще можно так (кроссмесячно): PHP: $date->modify('+3 day')->modify('+1 month')->modify('-3 day');