Шаблон SQL Date для дат, всю информацию о которых пользователь может не знать

StackOverflow https://stackoverflow.com/questions/614093

Вопрос

Ваша система позволяет новым пользователям регистрироваться и вводить дату своей свадьбы.Будучи пуристом, я хотел сохранить это как дату.После опросов пользователей стало ясно, что реальность отличается от такого подхода.Пользователи часто не уверены в дне или месяце и хотят сохранить неполные даты, например «июнь 2009 г.» или «где-то в 2012 г.».

Кто-нибудь знает хороший шаблон проектирования, который позволяет хранить частичные даты, а затем пытаться создать временную шкалу для большого дня, даже если введены частичные даты?

Это было полезно?

Решение

Может быть, "нечеткий" Дата. Если они скажут «июнь 2009», это можно сохранить как 15 июня 2009 года с отклонением +/- 15 дней.

" где-то в 2010 году " будет 01 июля 2010 года с дисперсией 180 дней.

Так что сохраните дату и # дней.

Если / как это будет работать на практике, я не знаю. Просто идея. Диапазон дат может быть проще реализовать.

Другие советы

Вы можете сохранить его как диапазон с колонками после даты и до даты.

Вы всегда можете хранить дату в отдельных столбцах:

  • год
  • месяц
  • день месяца

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

Вы можете сохранить даты как ГГГГММДД с неизвестными месяцами / днями, установленными на 0. Например, 20090200 будет «когда-нибудь в феврале 2009 года». Это позволит вам сравнительно легко сортировать и сравнивать, и если вам нужно преобразовать его в дату, вы можете просто добавить 1 к месяцу или дню, чтобы получить приближение для более сложных сравнений дат.

У меня была похожая проблема с датами; с добавленной проблемой, которую некоторые люди также хотели сказать «15 июня», без указания года. Это тот случай, когда вы тоже должны разобраться?

Я сохранил день, месяц и год в трех отдельных столбцах базы данных, с каждым обнуляемым, а затем (несколько) заново изобрел колесо в моем приложении (а также запретил некоторые случаи, например, когда люди говорили "The 15 сентября 1974 г.).

Однако, поскольку я поместил всю логику обработки дат в свое приложение, я никогда не обращался к трем столбцам по отдельности. Оглядываясь назад, я хотел бы поместить их в один столбец, содержащий частичные даты в виде строк (что-то вроде «19740615», «1974 ----», «0615» и т. Д.), Просто чтобы у меня было меньше беспорядка в столбцах.

Я думаю, это зависит от того, сколько вы хотите сделать в базе данных и сколько вы хотите сделать в своем приложении. В любом случае, я думаю, вы будете изобретать колесо немного другой формы. Но, конечно, вы достаточно хороши, чтобы создавать аккуратные, инкапсулированные, многократно используемые классы - это будет весело! : -)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top