Pergunta

Eu deveria estar usando um grande número inteiro ou um número inteiro regular em MySQL para armazenar um timerstamp em? Estou pensando em guardá-lo em um INT e não o construído em timestamp ou datetime tipo de modo que INT devo usar?

Foi útil?

Solução

Int iria rolar para um valor negativo em 2038 (se você estiver usando UNIX timestamp): http: // en.wikipedia.org/wiki/2038_problem .

para BIGINT é provavelmente a escolha mais segura

Outras dicas

Você deve estar armazenando-o em um timestamp já que é mais provável que os DBMS irá otimizar para dados timestamp.

Estou curioso para saber por que você iria sacrificar todo o trabalho duro que os desenvolvedores do MySQL têm posto em fazer timestamps trabalhar do jeito que deveriam, e substituí-lo com algo que quase certamente não funcionar tão bem.

Desde que você não fazer estado por você quiser usar um inteiro, eu só estou indo supor que era insanidade temporária e que você vai recuperar em breve: -)

Eu acho que depende inteiramente o que você quer fazer. Há alguns tipos adequados para os tipos de data / hora (ver: http://dev.mysql.com/doc/refman/5.0/en/date-and-time-type-overview.html )

  • DATE - tipicamente 3 bytes, intervalo:. 1000-01-01 para 9999-12-31
  • DATETIME - 8 bytes, gama 1000-01-01 00:00:00 para 9999-12-31 23:59:59
  • TIMESTAMP - 4 bytes variam UTC 1970-01-01 00:00:01 a UTC 2038-01-19 03:14:07. Então, há algumas questões semânticas para estar ciente de:

(int é 4 bytes como timestamp, bigint é de 8 bytes como DATETIME)

  • Data lojas de dias do calendário, data e hora e data e hora tanto store data + tempo em uma segunda precisão (precisão sub-segundo é suportado em data aritmética, mas não para armazenamento)
  • lojas timestamp um valor de UTC. Ou seja, qualquer valor que você ficar lá é convertido de fuso horário da sessão (por padrão, fuso horário do servidor) para UTC e armazenados. Em recuperação, o valor UTC é convertido novamente para o fuso horário em vigor na sessão.
  • timestamp podem ser declarados para obter automaticamente a hora atual na inserção ou atualização ou ambos. você melhor estudar o manual para os detalhes (ver http: //dev.mysql .com / doc / refman / 5.1 / en / timestamp.html )
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top