У меня есть требование хранить даты и длительности, связанные с несколькими разными календарями. В частности, мне нужно сохранить даты, которые:
- Разделите изменения на григорианские календари в разных странах в разное время.
- Накрыть исторический период не менее 500 лет.
- Работайте с несколькими типами календарей - лунными, солнечными, китайскими, финансовыми, христианскими, UTC, мусульманами.
- Сменим изменения в Великобритании на конец года с 31 марта по 31 декабря и сопоставимые изменения в других странах.
Мне также нужно сохранить длительности, которые я определил как разницу между двумя временными метками (дата и время). Это подразумевает необходимость сохранения "нулевой" даты - поэтому я могу хранить длительности, скажем, три с половиной часа; или 10 минут.
У меня детали необходимых вычислений. Временная метка Firebird основана на функции даты, которая начинается с 1 января 100 года н.э., поэтому не может использоваться для продолжительности в том, как мне нужно записывать их. Кроме того, этот тип данных настроен (как и большинство функций timestamp) для записи количества дней с базовой даты; он не предназначен для записи календарных дат.
Может ли кто-нибудь предложить:
- Структура данных для хранения дат и продолжительности, соответствующих вышеуказанным требованиям ИЛИ
- Ссылка на такую структуру данных OR
- Предлагайте рекомендации для подхода к структурированию такого хранилища ИЛИ
- Любые пункты, которые могут помочь мне в решении.
EDIT:
@Warren P предоставил отличную работу в своих ответах. Я, очевидно, не объяснил, что я ищу достаточно ясно, поскольку его работа концентрируется на вычислениях и способах их вычисления. Все ценные и полезные вещи, но не то, что я хотел рассказать.
У меня есть детали всех вычислений, необходимых для преобразования между различными представлениями дат, и у меня есть довольно хорошее представление о том, как их реализовать (используя такие элементы, как предлагает Уоррен). Тем не менее, мое требование заключается в датах STORE, которые отвечают различным критериям, перечисленным выше. Пример: дата, которую нужно сохранить - "Третий 13 июня Карл II". Я пытаюсь определить подходящую структуру, в которой можно хранить такие даты.
EDIT:
Я внесла поправки в предложенную мной схему. Я перечислил атрибуты в каждой таблице и определил таблицы и атрибуты примерами, указанными в третьем разделе окна сущности. Я использовал пример, приведенный в этом question и ответе в моем определении на примере, и внеся поправки пример в моем вопросе, чтобы соответствовать. Хотя я доказал свою схему, описав какой-то другой пример, эта схема все еще может быть сложной; над анализом; пропустите некоторое очевидное упрощение и может оказаться очень трудным для реализации (действительно, это может быть неправильно). Любые комментарии или предложения были бы наиболее желанными.