Armazenar data com máscara no DB?

5 respostas
K

Olá. Quero saber que técnica vocês utilizam:

1 - Armazenar a data com másca no DB
2 - Armazer no DB sem máscara e colocar a máscara quando for preciso exibir

Quanto a performance ? o que é mais legal de fazer ?

Obrigado!

5 Respostas

MarcioTavares

Eu sempre usei a opção número 2. O formato “YYYY-MM-DD HH:MM:SS.000” é meio que um padrão* pros bancos de dados, como se fosse o formato nativo (me corrijam se eu estiver errado). Obviamente, na hora de exibir essa data, é aplicada uma máscara em cima e isso não degrada em nada a performance.

  • acho que no Oracle isso é diferente, o pessoal especialista pode explicar melhor.
K

Ok. Mas quando a data de ser uma data informada pelo usuário ? e não um TimeStamp do banco.

MarcioTavares

Dependendo do jeito que vc programar, não fará diferença.

F

Olá,

Nao tem problema, so vai depender qual o teu banco.
Por exemplo no Postgre tem um tipo Date e um TimeStamp, ja no Oracle é tudo Date e se tu nao informar o “time” ele coloca zerado.

Quanto a opcao, nem pense em guardar data no banco no formato string com mascara é dor de cabeca na certa.

So pra ter ideia, se tu fizer isso e precisar fazer um simples SQL pra calcular algo em cima da data ja vai ser uma bronca.

]['s

Daniel_Quirino_Olive

Não faz a menor diferença de qualquer jeito. Acho que sua pergunta deveria ser assim: “para campos que representam datas, devo armazená-los no banco de dados usando uma string ou devo utilizar o tipo date nativo do banco de dados e me virar depois para apresentá-los aos usuários da maneira mais adequada para cada situação?”.

Agora, pense em questão de eficiência (pare de pensar como os outros fazem! A maioria pode estar errada!): é melhor armazenar sua data em uma representação textual (e correr o risco de ter alguma data do tipo ‘39/13/1982’ no seu banco de dados) ou você prefere deixar este trabalho todo para o banco de dados (que, certamente, vai saber qual é a melhor formar de tratar/validar sua data, além de saber que o melhor meio para representá-la internamente não é uma STRING e sim um número mágico*)+seu driver JDBC?

    • não é bem mágico. A maioria das datas são armazenadas como números (reais ou inteiros, dependendo do método) que contam uma determinada quantidade de tempo(dias, segundos, milissegundos…) a partir de uma data-marco (chamado de epoch). Em Java, as datas são representadas como números inteiros, contando os milissegundos a partir de 01/01/1970.
Criado 24 de agosto de 2006
Ultima resposta 24 de ago. de 2006
Respostas 5
Participantes 4