Каково внутреннее представление даты и времени на сервере sql?

StackOverflow https://stackoverflow.com/questions/1143259

Вопрос

Какова базовая структура данных значений даты и времени, хранящихся в SQL Server (2000 и 2005, если они разные)?Т.е. вплоть до байтового представления?

Предположительно, представление по умолчанию, которое вы получаете при выборе столбца даты и времени, представляет собой значение, специфичное для культуры, которое может быть изменено.То есть некоторая базовая структура, которую мы не видим, форматируется в ГГГГ-ММ-ДД ЧЧ:ММ:СС.ммм.

Причина, по которой я спрашиваю, заключается в том, что в моем отделе распространено мнение, что оно хранится в памяти буквально как ГГГГ-ММ-ДД ЧЧ:ММ:СС.ммм, но я уверен, что это не так.

Это было полезно?

Решение

Его хранится как 8-байтовое поле, способный принимать значения от 01.01.1753 до 31.12.9999, с точностью до 0,00333 секунды.

Детали предположительно непрозрачны, но большинство ресурсов (1), (2) что я нашел в сети, говорится следующее:

Первые 4 байта хранят количество дней с эпохи SQL Server (1 января 1900 года), а вторые 4 байта хранят количество тиков после полуночи, где «тик» составляет 3,3 миллисекунды.

Первые четыре байта имеют знак (могут быть положительными или отрицательными), что объясняет, почему могут быть представлены даты, предшествующие эпохе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top