Что следует учитывать перед сохранением отрицательных дат в MySQL?

Сейчас я работаю над проектом, который потребует от меня, чтобы пользователи могли хранить отрицательные даты в базе данных. Эти даты могут охватывать многие тысячи лет до нашей эры, вплоть до «сегодня». Я работал над многими проектами, в которых хранились даты, но все они были относительно недавними датами, и ни одна из них никогда не была отрицательной (BC).

Какие типы вещей я должен учитывать при работе с этим типом данных? Я полностью осведомлен о многих сдвигах календаря, которые произошли в истории, но я буду работать с современным календарем и не слишком беспокоиться о преобразованиях. Тем не менее, любая информация о конверсиях будет принята с благодарностью, так как это очень актуальная тема, которая интересует меня с академической точки зрения, хотя и не требует сосредоточения внимания на этом проекте.

Обновление: история будет ГГГГ-ММ-ДД (этот формат не требуется)


person Sampson    schedule 14.07.2009    source источник


Ответы (2)


Насколько точным должно быть ваше хранилище? Это годы, дни или часы/минуты. Если вы смотрите только на дни или годы, то, возможно, вам не нужно фактически хранить дату, а скорее смещение +/- дней/лет от вашей даты 0

person Paul Farry    schedule 14.07.2009
comment
Год, Месяц, День, Часы, Минуты - person Sampson; 14.07.2009
comment
Закончился переход с отдельными полями для года (int), месяца (int) и дня (int). Изменено периодом (1 = AD, 0 = BC). - person Sampson; 04.12.2009

У меня была аналогичная проблема, и я хотел продолжить передачу полей даты в БД, чтобы позволить мне использовать поиск по диапазону дат с точностью до дня для исторических значений. (Моя БД включает даты рождения и даты римских императоров...)

Решение состояло в том, чтобы добавить постоянный год (пример: 3000) ко всем датам, прежде чем добавлять их в БД, и вычесть то же число перед отображением результатов запроса пользователям.

Если в вашей БД уже есть какое-то значение даты, не забудьте обновить существующее значение новым константным номером.

person Yochai    schedule 28.02.2014
comment
Точная копия вашего ответа, прекратите публиковать повторяющиеся ответы и там, не создавая избыточности. - person Paresh Mayani; 28.02.2014