Pergunta

devo armazená-lo em um único timestamp / datetime campo ou de data e hora campos separados? Eu prefiro armazená-lo como um único campo timestamp, mas eu preciso saber quando um usuário não entra uma parte do tempo.

Como melhor loja de presente no banco de dados? Estou usando PostgreSQL.

Foi útil?

Solução

Há definitivamente razões pelas quais esta é uma má idéia. Há também razões pelas quais as suas opções são limitadas. É uma má ideia porque é um único item de dados e para a razão mais prática que você não pode armazenar um fuso horário, se você tem dois campos.

Como mencionado acima, os nulos são do benefício óbvio de usar dois campos.

Você também pode querer considerar o uso de um único campo de data e hora e armazenar uma bandeira para indicar se ou não o usuário digitou um tempo. Este poderia ser um sinalizador booleano. No entanto, você ainda terá que pensar sobre como você está indo para usar estes dados - entrar apenas uma data para um campo de data e hora irá conduzir a um componente de tempo a ser definida como a meia-noite. Isto terá implicações na triagem e seleção. Além disso, se você está armazenando fusos horários, você terá que ter muito cuidado quando você usa os dados.

A fim de cumprir a sua obrigação de saber se deve ou não um tempo foi inscrito você precisará ter dois campos. Você não precisa o segundo campo para ser um momento embora.

Outras dicas

A resposta óbvia é usar dois campos separados; então você pode usar valores NULL.

Se você optar por usar um campo que você terá que escolher uma parte do tempo mágica que significa "não introduzir um tempo real", que tem o perigo de que coincide com um tempo real (embora improvável).

Além disso, se você pretende usar a parte de data e hora separadamente, muitas vezes, então ele pode também ser conveniente utilizar campos separados; caso contrário, muitas vezes você vai precisar de funções de selecção uso para extrair a parte relevante de um campo.

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