PHP: Добавление месяцев к дате, но не более последнего дня месяца

Подобный Robert Paulson, выше, наша организация сохраняет базу данных при управлении исходным кодом. Однако наше различие - то, что мы пытаемся ограничить количество сценариев, которые мы имеем.

Для любого нового проекта, существует процедура набора. У нас есть сценарий создания схемы в версии 1, сохраненный proc сценарий создания и возможно, исходные данные загружают сценарий создания. Все procs сохранены в единственном, по общему признанию крупном файле. Если мы пользуемся Библиотекой Предприятия, мы включаем копию сценария создания для входа; если это - проект ASP.NET использование среды разработки приложения ASP.NET (аутентификация, персонализация, и т.д.), мы включаем тот сценарий также. (Мы генерировали его от инструментов Microsoft, затем настроили его, пока это не работало воспроизводимым способом через различные сайты. Не забава, но инвестиции бесценного времени.)

Мы используем волшебный CTRL+F для нахождения proc, который мы любим.:) (Мы любили бы его, если Studio управления SQL имел навигацию кода как VS, делает. Вздохните!)

Для последующих версий, у нас обычно есть upgradeSchema, upgradeProc и/или updateDate сценарии. Для обновлений схемы мы изменяем таблицы как можно больше, создавая новые по мере необходимости. Для обновлений proc мы ОТБРАСЫВАЕМ и СОЗДАЕМ.

Одна морщина действительно открывается с этим подходом. Легко генерировать базу данных, и легко получить новое до скорости на текущей версии DB. Однако заботу нужно соблюдать о поколении DAL (который мы в настоящее время - обычно - делаем с SubSonic), чтобы гарантировать, что изменения DB/schema/proc синхронизируются чисто с кодом, используемым для доступа к ним. Однако в нашей сборке пути являются пакетным файлом, который генерирует SubSonic DAL, таким образом, это - наш SOP к контролю код DAL, повторно выполняет тот пакетный файл, затем перепроверяет все это в в любое время изменении procs и/или схеме. (Это, конечно, инициировало исходную сборку, обновляя совместно использованные зависимости к соответствующему DLLs...)

33
задан Geoff Maddock 22 April 2011 в 23:03
поделиться

1 ответ

Можно использовать этот код. Первая строка принимает Дату в любом формате, и более поздние строки отделяют значение месяца, добавляя месяц и возвращая окончательное значение в Y-M-D формат.

$year_month = Date("Y-m", strtotime($date));
$year_month_incremented = Date("Y-m", strtotime($year_month . " +1 Month "));
$month_end_dt =strtotime('last day of this month', strtotime($year_month_incremented));
$date = date('Y-m-d', $month_end_dt );
0
ответ дан 27 November 2019 в 18:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: