Суммируйте несколько дат в фиксированном алгоритме - PullRequest
0 голосов
/ 14 апреля 2020

У меня проблема с созданием firebird на основе sql, который основан на заданном c алгоритме. Этот алгоритм выглядит следующим образом:

  1. Полный год рассчитывается по формуле: дата начала + 1 год - 1 день Пример: для даты начала 10.05.2015 год заканчивается 9.05.2016.
  2. Полный месяц рассчитывается по формуле: дата начала + 1 месяц - 1 день. Пример: для даты начала 9.05.2015, месяц заканчивается 8.06.2015. 3.Если существует более одного периода и непрерывность этих периодов поддерживается, эти периоды рассматриваются как один период. Пример: периоды 01.01.2015 –31.05.2015 и 01.06.2015 –31.12.2015 будут рассматриваться как один период 01.01.2010 -31.12.2010.
  3. Если два периода перекрываются, включается перекрывающаяся часть один раз. Пример: периоды 01.01.2015–31.05.2015 и 01.05.2015–31.12.2015 будут рассматриваться как один период 01.01.2015–31.12.2015.
  4. Предполагается, что 30 дней - это один месяц, а 12 месяцы - это один год.

Пример

Первый период - 25.02.2013 - 23.04.2013

  1. Количество полных лет - 0
  2. Количество полных месяцев: с 25.02.2013 по 24.03.2013 - 1 месяц
  3. Количество дней: с 25.03.2013 по 23.04.2013 - 30 дней, 1 месяц.

Сумма дат: 0 лет, 2 месяца, 0 дней.

Вторая дата: 15.10.2013–24.09.2016

  1. Количество полных лет: с 15.10. 2013 по 14.10.2015 - 2 года
  2. Количество полных месяцев: с 15.10.2015 по 14.09.2016 - 11 месяцев
  3. Количество дней: с 15.09.2016 по 24.09.2016 - 10 дней

    Итого: 2 года 11 месяцев 10 дней Сумма первого периода: 0 лет 2 месяца 0 дней Итого по второму периоду: 2 года 11 месяцев тыс., 10 дней Всего: 2 года, 13 месяцев, 10 дней Всего дат: 3 года, 1 месяц, 10 дней

Кто-нибудь знает, как добраться до этого sql ? Пожалуйста, помогите.

...