Pergunta

Você sistema permite que novos usuários se registrem e digite sua data do casamento. Sendo um purista, eu queria guardar isso como uma data. Após entrevistas de usuários, ficou claro que a realidade difere desta abordagem. Os usuários muitas vezes não são a certeza do dia ou do mês, e desejo para armazenar datas parciais, então "June 2009" ou "em algum momento de 2012".

Alguém sabe um padrão de design bom que permite o armazenamento de datas parciais, e, em seguida, tentando criar uma linha do tempo para o grande dia - embora haja datas parciais entraram?

Foi útil?

Solução

Talvez uma data "difusa". Se eles dizem "June 2009", que podem ser armazenados até 15 junho de 2009, com uma variação de +/- 15 dias.

"em algum momento em 2010" seria 01 de julho de 2010, com uma variação de 180 dias.

Assim armazenar uma data e um # dias.

Se / como isso funciona na prática, eu não sei. Apenas uma ideia. Um intervalo de datas pode ser mais fácil de implementar.

Outras dicas

Você pode armazená-lo como um intervalo com uma coluna de pós-data e antes da data.

Você sempre pode armazenar a data em colunas separadas:

  • ano
  • mês
  • dia do mês

Mantenha-os todos anulável. Você pode adicionar uma coluna onde você armazena o tempo total calculado. Para que o tempo computadorizada você usa alguns valores padrão para todas as colunas que são nulos.

Você pode armazenar datas como YYYYMMDD, com desconhecidos meses / dias definido como 0. por exemplo, 20090200 seria "algum dia em fevereiro 2009". Isso tudo vai você para classificar e comparar de forma relativamente fácil, e se você precisa convertê-lo para uma data, você pode simplesmente adicionar 1 ao mês ou dia para obter uma aproximação para comparações de data mais avançadas.

Eu tive um problema semelhante com datas; com a questão acrescentou que algumas pessoas também queria dizer "15 de junho", sem especificar o ano. É este um caso você tem que trabalhar também?

Eu armazenado o dia, mês e ano em três colunas separadas no banco de dados, com cada anulável, então (um pouco) re-inventou a roda no meu aplicativo (bem como não permitindo alguns casos, tais como as pessoas dizendo "O 15º de 1974" ).

No entanto, como eu colocar toda a lógica de manipulação de data na minha aplicação, eu nunca acessou as três colunas individualmente. Em retrospectiva eu ??gostaria de ter colocá-los em uma única coluna, segurando datas parciais como strings (algo como "19740615", "1974 ----", "---- 0615", etc.), apenas para que eu' d ter menos confusão coluna.

Eu acho que depende de quanto você quer fazer no banco de dados e quanto você quer fazer na sua aplicação. De qualquer forma, eu acho que você vai ser inventar uma roda de uma forma diferente, ligeiramente. Mas, claro, você é bom o suficiente para fazer algumas arrumado, encapsulado, classes reutilizáveis ??- que vai torná-lo divertido! : -)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top