Разделение даты на основе разделения - PullRequest
0 голосов
/ 01 марта 2010

С учетом даты, даты и финансового года. Я хочу получить всю длительность разделения в пределах данной продолжительности на основе запрошенного разделения.

Разрывы:
1) Еженедельно : с понедельника по воскресенье.
2) Ежемесячно : это должно быть с 1-го числа месяца до конца месяца.
3) Ежеквартально Поскольку система финансового года - апрель-март, квартальные сбои должны быть апрель-июнь, июль-сентябрь, октябрь-декабрь, январь-мар
4) полугодовые : Поскольку система финансового года - апрель-март, период полугодового распада должен быть апрель-сентябрь, октябрь-март.
5) Годовой : Поскольку система финансового года - апрель-март, годовой распад должен быть апрель-март.

Ниже поясняется с примерами.
Пример 1:
С даты: февраль-10-2010
На сегодняшний день: февраль-10-2010
Система финансового года: с апреля по март

Еженедельное разделение: с февраля-08-2010 по февраль-14-2010
Распределение по месяцам: с февраля 01-2010 по 28 февраля 2010
Ежеквартальный распад: с 1 января 2010 года по 31 марта 2010 года
Полугодовой распад: с 1 октября 2009 года по 31 марта 2010 года
Годовой распад: с апреля 01-2009 по 31 марта 2010 года

Ищу подход / алгоритм для решения этой проблемы в PostgreSQL 8.2.

Это сообщение похоже на вопрос, размещенный здесь: Разделение даты по финансовому году

1 Ответ

1 голос
/ 19 февраля 2011

Вместо того, чтобы пытаться сделать это в коде, возможно, стоит использовать таблицу календаря с ключом даты и атрибутами периода.
например,

CREATE TABLE calendar_day (
day_date DATE PRIMARY KEY,
week_number INTEGER NOT NULL,
month_number SMALLINT NOT NULL,
quarter_number SMALLINT NOT NULL,
demi_year_number SMALLINT NOT NULL,
fiscal_year SMALLINT NOT NULL);

Это можно довольно легко заполнить с помощью функций даты generate_series () и postgresql, а затем использовать для присоединения в соответствии с критериями даты, которые вы хотите использовать

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