Por que 1753? O que eles têm contra 1752? Meu tataravô tataravô ficaria muito ofendido.
Por que 1753? O que eles têm contra 1752? Meu tataravô tataravô ficaria muito ofendido.
A decisão de usar 1º de janeiro de 1753 ( 1753-01-01
) como o valor mínimo de data para um datetime no SQL Server volta às origens do Sybase .
O significado da data em si pode ser atribuído a esse homem.
Philip Stanhope, 4º Conde de Chesterfield. Quem dirigiu a Lei do Calendário (Novo Estilo) 1750 através do Parlamento Britânico. Isso legislou para a adoção do calendário gregoriano para a Grã-Bretanha e suas então colônias.
Havia alguns dias faltando (link do arquivo da Internet) no calendário britânico em 1752, quando o ajuste foi finalmente feito a partir do calendário juliano. 3 de setembro de 1752 a 13 de setembro de 1752 foram perdidos.
Kalen Delaney explicou a escolha desta maneira
Então, com 12 dias perdidos, como você pode calcular datas? Por exemplo, como você pode calcular o número de dias entre 12 de outubro de 1492 e 4 de julho de 1776? Você inclui os que faltam 12 dias? Para evitar a solução desse problema, os desenvolvedores originais do Sybase SQL Server decidiram não permitir datas anteriores a 1753. Você pode armazenar datas anteriores usando campos de caracteres, mas não pode usar nenhuma função de data e hora com as datas anteriores armazenadas em caracteres Campos.
A escolha de 1753 parece um tanto anglocêntrica, no entanto, como muitos países católicos na Europa usavam o calendário há 170 anos antes da implementação britânica (originalmente adiada devido à oposição da igreja ). Por outro lado, muitos países não reformaram seus calendários até muito mais tarde, em 1918, na Rússia. De fato, a Revolução de Outubro de 1917 começou em 7 de novembro sob o calendário gregoriano.
Tanto datetime
o novo datetime2
tipo de dados mencionado na resposta de Joe não tentam explicar essas diferenças locais, mas simplesmente usam o calendário gregoriano.
Assim, com a maior variedade de datetime2
SELECT CONVERT(VARCHAR, DATEADD(DAY,-5,CAST('1752-09-13' AS DATETIME2)),100)
Devoluções
Sep 8 1752 12:00AM
Um ponto final com o datetime2
tipo de dados é que ele usa o calendário gregoriano pró-séptico projetado para trás muito antes de realmente ser inventado, portanto é de uso limitado para lidar com datas históricas.
Isso contrasta com outras implementações de software, como a classe Java Gregorian Calendar, cujo padrão é seguir o calendário juliano para datas até 4 de outubro de 1582 e depois saltar para 15 de outubro de 1582 no novo calendário gregoriano. Ele lida corretamente com o modelo juliano do ano bissexto antes dessa data e o modelo gregoriano após essa data. A data de transição pode ser alterada pelo chamador ligando setGregorianChange()
.
Um artigo bastante divertido discutindo algumas peculiaridades com a adoção do calendário pode ser encontrado aqui .
O tataravô deve atualizar para o SQL Server 2008 e usar o tipo de dados DateTime2 , que suporta datas no intervalo: 0001-01-01 a 9999-12-31.
fonte
1752 foi o ano da Grã-Bretanha mudando do calendário juliano para o gregoriano. Acredito que duas semanas em setembro de 1752 nunca aconteceram como resultado, o que tem implicações para datas nessa área geral.
Uma explicação: http://uneasysilence.com/archive/2007/08/12008/ ( versão do Internet Archive )
fonte
Esta é a história completa de como foi o problema da data e como os Big DBMSs lidaram com esses problemas.
Fonte 1 e 2
fonte
Aliás, o Windows não sabe mais como converter corretamente o horário local do UTC para o EUA em determinadas datas em março / abril ou outubro / novembro dos anos anteriores. Os carimbos de data e hora baseados em UTC dessas datas agora são um tanto absurdos. Seria muito nojento para o sistema operacional simplesmente se recusar a lidar com qualquer registro de data e hora antes do último conjunto de regras de horário de verão do governo dos EUA, para que ele simplesmente lide com alguns deles erradamente. O SQL Server se recusa a processar datas anteriores a 1753, porque seria necessária muita lógica extra especial para manipulá-las corretamente e não deseja manipulá-las incorretamente.
fonte