Kategoria: SQL Dodane przez marcin90

W jaki sposób SQL Server przechowuje daty?

1 odpowiedź

1 0 Dodane 10-06-2018 przez marcin90

Typ DATETIME jest przechowywany jako dwie wartości typu INT. Pierwsza wartość reprezentuje liczbę dni a druga reprezentuje czas. Wartość oznaczająca liczbę dni mieści się w przedziale od 1 stycznia 1753r do 31 grudnia 9999r. Dostępny przedział czasowy mieści się od 00:00:00:000 do 23:59:59:997.

Wartość domyślna, czyli zero dla obydwu wartości to 1900-01-01 00:00:00:000.
SELECT CAST (0 AS DATETIME)

Output:
1900-01-01 00:00:00.000

Daty poniżej wartości domyslnej są reprezentowane poprzez ujemną liczbę dni a powyżej poprzez dodatnią liczbę dni. Np. 31 grudnia 1899 jest reprezentowany przez liczbę dni -1, a 1 stycznia 1901r będzie dniem +365.
SELECT CAST (-1 AS DATETIME)

Output:
1899-12-31 00:00:00.000

SELECT CAST (365 AS DATETIME)

Output:
1901-01-01 00:00:00.000

Dla wartości oznaczających czas, najmniejsza możliwa rozdzielczość to 3ms. To oznacza, że 00:00:00:003 jest przechowywane jako 1, a 1 sekunda, czyli 00:00:01:000 jest przechowywane jako 300.

dependency 26-07-2018 05:37
bardzo ciekawe! ale na odpowiedź w trakcie rozmowy kwalifikacyjnej się nie nadaje, zbyt szczegółowo, na rozmowie nie możesz pokazać komuś kodu.

Dodaj swoją wersję odpowiedzi

Dodajesz odpowiedź jako gość. Zaloguj się się by uzyskać dostęp do rankingu oraz powiadomień.