Tudo o que se segue é citado da datetime
linha aqui . Quebrei a citação para comentar meu entendimento.
Usa a representação de dados inteiros usando dois inteiros de 4 bytes. O valor inteiro representa o número de dias com data base de 1900-01-01.
Em outras palavras, temos oito bytes para trabalhar. Isso é exatamente igual ao que datetime
já está sendo feito.
Os primeiros 2 bytes podem representar até o ano 2079. A compactação sempre pode salvar 2 bytes aqui até esse ponto.
Ou seja, até 2079 estaremos perdendo dois bytes por ano. Depois desse ponto, perderemos mais. Isso significa que para datas anteriores a 2079, temos seis dos nossos oito bytes originais para trabalhar.
Cada valor inteiro representa 3,33 milissegundos. A compactação esgota os primeiros 2 bytes nos primeiros cinco minutos [sic] e precisa do quarto byte após as 16h.
Em outras palavras, depois das 16h, só temos dois dos seis bytes restantes para trabalhar.
Portanto, a compactação pode salvar apenas 1 byte após as 16h.
Esta é claramente a parte que não entendo . Minha aritmética anterior prova que nos restam dois adeus. No entanto, a Microsoft diz que só temos um. Isso é duplamente confuso, porque se já passarmos de 2079, os números da Microsoft nos colocariam como tendo menos um byte restante.
Quando datetime é compactado como qualquer outro número inteiro, a compactação salva 2 bytes na data.
O usuário não tem controle sobre como funciona a compactação, portanto esta linha é totalmente irrelevante.
Pelo exposto, é evidente que tenho um grande mal-entendido. O que eu perdi?