В интервалах дат MySQL 1 МЕСЯЦ совпадает с 30 ДНЕМ?1 КВАРТАЛ - это 3 МЕСЯЦА?И так далее? - PullRequest
4 голосов
/ 21 октября 2011

Я пытаюсь написать PHP-скрипт, который будет обрабатывать повторяющиеся платежи каждый месяц, квартал, год и т. Д. Этот скрипт будет работать как ночная работа Cron.

Я не хочу сталкиваться с ситуацией, когда кто-то подписывается, скажем, 15 января, а затем снова получает счет 1 февраля.

Это то, что случилось бы, если бы я проверил последний платеж с ИНТЕРВАЛОМ 1 МЕСЯЦ? Или это будет то же самое, что ИНТЕРВАЛ 30 ДНЕЙ, и обработать платеж снова только 15 февраля, чего я и хочу?

1 Ответ

4 голосов
/ 10 ноября 2011

По MYSQL

Если вы добавите MONTH, YEAR_MONTH или YEAR, и у получающейся даты будет день это больше, чем максимальный день для нового месяца, день с учетом максимального количества дней в новом месяце:

mysql> SELECT DATE_ADD ('2009-01-30', ИНТЕРВАЛ 1 МЕСЯЦ); -> '2009-02-28' Арифметические операции с датой требуют полных дат и не работают с неполными датами, такими как '2006-07-00' или сильно уродливые даты:

Таким образом, если вы используете встроенную функцию за 1 месяц, вам не нужно беспокоиться о последнем дне месяца. MYSQL сделает всю работу за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...