У меня есть требование хранить даты и продолжительность, вытекающие из нескольких разных календарей. В частности, мне нужно хранить даты, которые:
Мне также необходимо сохранить продолжительность, которая Я определил как разницу между двумя отметками времени (дата и время). Это подразумевает необходимость иметь возможность хранить «нулевую» дату - так что я могу хранить длительность, скажем, три с половиной часа; или 10 минут.
У меня есть детали необходимых вычислений. Отметка времени Firebird основана на функции даты, которая начинается с 1 января 100 г. н.э., поэтому не может использоваться в течение продолжительности так, как мне нужно их записывать. Вдобавок этот тип данных настроен (как и большинство функций меток времени) для записи количества дней, прошедших с базовой даты; он не предназначен для записи календарных дат.
Кто-нибудь может предложить:
РЕДАКТИРОВАТЬ:
@Warren P предоставил отличную работу в своих ответах. Очевидно, я недостаточно ясно объяснил, что ищу, поскольку его работа сосредоточена на вычислениях и на том, как их вычислять. Все ценные и полезные вещи, но не то, что я хотел передать своим вопросом.
У меня есть детали всех вычислений, необходимых для преобразования между различными представлениями дат, и у меня есть довольно хорошее представление о том, как их реализовать (с использованием таких элементов, как предлагает Уоррен). Однако мое требование - СОХРАНИТЬ даты, которые соответствуют различным критериям, перечисленным выше. Пример: сохраняемая дата - «Третье июня 13 Карл II». Я пытаюсь определить подходящую структуру для хранения таких дат.
РЕДАКТИРОВАТЬ:
Я изменил предложенную мной схему. Я перечислил атрибуты в каждой таблице и определил таблицы и атрибуты на примерах, приведенных в третьем разделе окна сущности. Я использовал пример, приведенный в этом вопросе и ответе в моем определении на примере, и изменил пример в моем вопросе для соответствия. Хотя я доказал свою схему, описав чей-то еще пример, эта схема все же может быть слишком сложной; сверх проанализированы; упустить некоторые очевидные упрощения и может оказаться очень трудным для реализации (на самом деле, это может быть совершенно неправильно). Любые комментарии или предложения приветствуются.