O que considerar antes de armazenar negativos-datas no MySQL?
Pergunta
Eu estou trabalhando em um projeto agora que vai me obrigar a permitir aos usuários armazenar negativos-datas no banco de dados. Estas datas têm o potencial para abranger muitos milhares de anos aC, e mais tarde como 'Hoje'. Eu trabalhei em muitos projetos que datas armazenadas, mas eram todas as datas relativamente-recentes, e nenhum deles era sempre negativo (BC).
Que tipos de coisas que eu deveria levar em considerar quando se trabalha com este tipo de dados? Estou plenamente consciente das muitas calendário turnos que tiveram lugar na história, mas eu vou estar trabalhando com o calendário moderno e não se preocupar muito sobre fazer conversões. No entanto, qualquer informação sobre conversões seria muito apreciada, pois é um tema muito relevante, e um que eu estou academicamente interessado em embora não seja obrigado a concentrar-se durante este projecto.
Update: Eu serei história AAAA-MM-DD (Esse formato não é obrigatório)
Solução
Como precisa é que a sua necessidade de armazenamento de ser? É anos, dias ou horas / minutos. Se você está apenas olhando para dias ou anos, então talvez você não precisa realmente armazenar a data, mas sim um deslocamento de +/- Dia / Anos de sua 0 Data ??p>
Outras dicas
Eu tive o problema semelhante e eu queria continuar relé em campos de data no DB para permitir-me usar a data intervalo de pesquisa com precisão de up-to de um dia para valores históricos. (Meu DB inclui a data de nascimento e as datas de imperadores romanos ...)
A solução foi adicionar um ano constante (exemplo: 3000). Para todas as datas antes de adicionar-los para o DB e subtraindo o mesmo número antes de exibir os resultados da consulta para os usuários
Se você DB já tem algum valor datas nele, lembre-se de atualizar o valor de sair com o novo número de const.