Работа с таблицами и типами данных. Типы данных. Символьные типы. Точные числовые типы. Приближенные числовые типы, страница 2

SQL Server поддерживает два типа данных с плавающей точкой или приближенными числовыми значениями: float и real. Тип данных float, как и тип decimal, описанный ранее, принимает параметр. Параметр, предоставляемый типу данных float, задает количество битов, используемых для хранения мантиссы числа с плавающей точкой. Любое значение, меньшее или равное 24, интерпретируется как 24, все значения большие 24— как 53. Это означает, что мантисса занимает 24 или 53 бита в зависимости от величины параметра, заданного для типа данных float.

Тип данных

Объем памяти

Допустимые значения

float 

(n ≤ 24)

4 байта

От-3.40х1038до-1.18х10-38 и от 1.18 х 10-38  до 3.40 х 1038

float

(24 < n  ≤ 53)

8 байтов

От-1.79 х 10308 до -2.23 х 10-308 и от 2.23 х 10"308  до 1.79x10308

real

Функционально эквивалентен float(24)

Обработка дат и времени суток

Тип данных

Объем памяти

Допустимые значения

Примечания

datetime

8 байтов

С 1 января 1753 г.  по 31 декабря 9999 г. с точностью до каждой третьей миллисекунды

Поддерживается в основном для обратной совместимости. Везде,

где это возможно, применяйте типы datetime2, date, time или datetimeoffset

smalldatetime

4 байта

С 1 января 1900 г.  по 5 июня 2079 г. с точностью до минуты

Поддерживается в основном для обратной совместимости. Везде, где это возможно, применяйте типы datetime2, date, time или datetimeoffset

datetime2

(точность до долей секунд)

От 6  до 8 байтов

С 1 января 0001 г. 

по 31 декабря 9999 г. с точностью до заданной доли секунды

Применяйте, если нужны дата и время суток, но без учета сдвига часового пояса

datetimeoffset

(точность до долей секунд)

От 8  до 10 байтов

С 1 января 0001 г. 

по 31 декабря 9999 г. с точностью до заданной доли секунды и сдвигом часового пояса от -14:00 до +14:00

Применяйте, если нужны дата, время суток и сдвиг или смещение часового пояса

date

3 байта

С 1 января 0001  по 31 декабря 9999

Применяется, если нужна только дата

time

(доли секунд)

От З  до 5 байтов

С 00:00:00 до 23:59:59  с точностью до заданной доли секунды

Используется, если необходимо только время суток

До версии SQL Server 2008 для обработки дат и времени суток применялись только два типа данных: datetime и smalldatetime.

С типом данных datetime связаны некоторые проблемы. Одна из них состоит в том, что дата и время суток хранятся вместе, что не всегда желательно.

Пример 1.1.  Из таблицы Sales.SalesOrderHeader (Общие сведения о заказе на продажу) извлечь все заказы, сделанные 1 июля 2001 г.

 

Этот запрос вернет только заказы, сделанные 1 июля 2001 г. точно в 00:00:00. Чтобы получить желаемый результат, вы можете применить следующее.

Пример 1.2.  Из таблицы Sales.SalesOrderHeader (Общие сведения о заказе на продажу) извлечь все заказы, сделанные 1 июля 2001 г.

 

При попытке преобразования строковой константы в тип данных datetime или smalldatetime следует всегда применять формат YYYYMMDD для дат без времени суток и формат YYYY-MM-DDTHH:MI:SS.XXX для дат со временем суток. Оба эти формата действуют независимо от языка и форматов дат, установленных в вашем соединении.

Подробную информацию о том, как повлиять на форматы дат, принимаемые SQL Server см. в разд. "SET DATEFORMAT" и "SET LANGUAGE" электронной документации по SQL Server.