Как сохранить даты диапазона по умолчанию в базе данных MySQL? - PullRequest
3 голосов
/ 28 декабря 2011

Мне нужно хранить даты в MySQL с 6000 лет до нашей эры до сих пор. Но я не могу использовать тип DateTime для этого:

Ссылка на MySQL : "Поддерживаемый диапазон: от" 1000-01-01 00:00:00 "до" 9999-12-31 23:59:59 ""

От 6000 до н.э. до настоящего момента в секундах (60 * 60 * 60 * 24 * 31 * 12) * 8000 = 15427584000000. Теперь я думаю о сохранении дат с помощью BigInteger (например, TimeStamp) и все время конвертирую их в обычную дату.

Что вы можете мне посоветовать? Может быть, какие-то решения уже существуют?

Ответы [ 2 ]

2 голосов
/ 28 декабря 2011

Вы можете выбрать тип данных CHAR(20), отформатированный как:

  • первая буква в алфавитном порядке обозначает эпоху (A до и после B)
  • остальные 19 символов - это дата и время в указанном вами формате (ггд ч: м: с)

Таким образом, у вас также будет sort и индексированный поиск по этому столбцу.

Имея BIGINT, вам нужно взять ссылку datetime, к которой будут относиться все ваши даты. Кроме того, преобразование этого timestamp в datetimes приведет к значительному увеличению кода вашего приложения

1 голос
/ 28 декабря 2011

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

Второй столбец может быть обычной датой для тех дат, которые фактически можно представить в виде даты, делающей все даты после 1000 AC возможными для точного указания дня и времени.Этот второй столбец должен учитывать нулевые значения.

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