Published on

October 24, 2007

Понимание типов данных даты и времени в SQL Server

В Microsoft SQL Server 2008 есть несколько новых типов данных даты и времени, которые обеспечивают большую точность и гибкость по сравнению с традиционными типами данных. В этой статье мы рассмотрим эти новые типы данных и узнаем, как их манипулировать с помощью команд TSQL.

Функции CAST и CONVERT

Прежде чем погрузиться в новые типы данных, давайте сначала разберемся с функциями CAST и CONVERT. Эти функции позволяют нам изменять тип данных или стиль значения. Хотя обе функции служат похожей цели, CONVERT имеет дополнительную возможность изменять стиль значения.

Синтаксис для CAST выглядит так: CAST(value AS new type). Например, мы можем объявить переменную DATETIME и затем преобразить ее в строку:

DECLARE @myTime AS DATETIME;
SET @myTime = '1/1/2007';
SELECT @myTime;

Результат: 2007-01-01 00:00:00.000

Мы также можем преобразовать строку в дату с помощью CAST:

SELECT CAST('Jan 1 2007 12:00AM' as DATETIME)

Результат: 2007-01-01 00:00:00.000

Синтаксис для CONVERT выглядит так: CONVERT(new type, value, Style). Style является необязательным и может использоваться для форматирования вывода. Например, чтобы отобразить дату в общем стиле mm/dd/yy, мы можем использовать следующее:

DECLARE @myDate AS DATETIME;
SET @myDate = '1/1/2007';
SELECT CONVERT(varchar(50), @myDate, 1)

Результат: 01/01/07

Чтобы изменить отображение так, чтобы месяц был написан полностью, мы можем изменить стиль CONVERT с 1 на 7:

SELECT CONVERT(varchar(50), @myDate, 7)

Результат: Jan 01, 07

Тип данных DATETIME

Стандартный тип данных DATETIME был сохранен в SQL Server 2008. Он содержит как компонент даты, так и компонент времени. Компонент даты представлен числом дней от внутренней системной “базовой даты” 1 января 1900 года.

Тип данных DATETIME может содержать значения года от 1753 до 9999. Компонент времени точен до 3,33 миллисекунд. Если вам не нужны секунды и ваши годы находятся между 1900 и 2079, то можно использовать тип SMALLDATETIME. Он занимает в два раза меньше байтов, чем DATETIME, и секунды округляются до ближайшей минуты.

Тип данных DATETIME2

В SQL Server 2008 появился новый тип данных DATETIME2. Он похож на DATETIME, но позволяет достичь большей точности. Диапазон года может вместить значения от 1 января 1 года н.э. до 31 декабря 9999 года. Время может быть указано с точностью до семи десятичных знаков долей секунды. Синтаксис для объявления этого нового типа может быть просто DATETIME2 или DATETIME2(n), где (n) – это значение от 0 до 7, указывающее доли секунды.

Отдельные типы DATE и TIME

В SQL Server 2008 даты и времена могут храниться отдельно, а не вместе. Есть тип данных DATE и тип данных TIME. Тип TIME может указывать доли секунды, как тип DATETIME2.

Тип данных DATETIMEOFFSET

Значения, которым необходимо учитывать часовой пояс, теперь могут быть обработаны нативно в SQL Server 2008 с помощью типа данных DATETIMEOFFSET. Этот тип объединяет DATETIME2 с компонентом смещения.

Заключение

SQL Server 2008 представляет новые и удобные типы данных даты и времени, которые обеспечивают большую точность и гибкость. Понимание этих типов данных и способов их манипулирования с помощью функций CAST и CONVERT является необходимым для работы с датами и временем в SQL Server.

Спасибо за чтение!

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.