6

Jakie są podstawowe dane dotyczące wartości datetime przechowywane w SQL Server (2000 i 2005, jeśli są różne)? To znaczy do reprezentacji bajtów?Co to jest wewnętrzna reprezentacja datetime w serwerze sql?

Prawdopodobnie domyślna reprezentacja, którą uzyskasz po wybraniu kolumny daty i godziny, to wartość/obiekt podlegający zmianie w kulturze. Oznacza to, że pewna ukryta struktura, której nie widzimy, jest formatowana do RRRR-MM-DD GG: MM: SS.mmm.

Powód, o który pytam, jest ogólnie podzielony w moim dziale, że jest przechowywany w pamięci dosłownie jako RRRR-MM-DD HH: MM: SS.mmm, ale jestem pewien, że tak nie jest.

Odpowiedz

11

To stored as an 8 byte field, w zakresie od 1753-01-01 do 9999-12-31, z dokładnością do 0,00333 sekundy.

Szczegóły są podobno nieprzezroczysty, ale większość zasobów (1), (2) że znalazłem się w stanie internetowej następujące:

Pierwsze 4 bajty przechowywać liczbę dni od epoki (1 Jana SQL Server 1900) i że drugie 4 bajty przechowuje liczbę znaczników po północy, gdzie "tick" wynosi 3,3 milisekundy.

Pierwsze cztery bajty są podpisane (mogą być dodatnie lub ujemne), co wyjaśnia, dlaczego daty wcześniejsze niż epoka mogą być reprezentowane.

+7

To nie jest poprawne. Z połączonego artykułu: Właściwie SQL Server przechowuje tam takty zegara od północy. Każdy tyknięcie zegara odpowiada 3,33 milisekundy. Jest to również powód, dla którego typ danych DATETIME ma dokładność jednej setnej sekundy. To znowu jest poprawnie określone w BOL. – ctusch

+1

@ctusch, zaktualizowałem odpowiedź (po prawie 7 latach!), Aby skorygować rozmiar "kleszczy". –

+0

Co ciekawe, dokumentacja SQL Server używa terminu "dokładność". To * powinno * mówić "precyzja". –

Powiązane problemy