smalldatetime (Transact-SQL)
Определяет дату, сочетающуюся с временем дня. Время представлено в 24-часовом формате с секундами, всегда равными нулю (:00), без долей секунд.
Примечание
Используйте для новых проектов типы данных time, date, datetime2 и datetimeoffset.Эти типы соответствуют стандарту языка SQL.Их проще переносить на другие платформы.time, datetime2 и datetimeoffset поддерживают более высокую точность секунд.datetimeoffset обеспечивает поддержку часовых поясов для приложений, развертываемых по всему миру.
Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск). |
Описание типа данных smalldatetime
Синтаксис |
smalldatetime |
Использование |
DECLARE @MySmalldatetime smalldatetime CREATE TABLE Таблица1 ( Столбец1 smalldatetime ) |
Форматы строковых литералов по умолчанию (используется для клиента нижнего уровня) |
Неприменимо |
Диапазон даты |
От 01.01.1900 до 06.06.2079 1 января 1900 года — 6 июня 2079 года |
Диапазон времени |
От 00:00:00 до 23:59:59 2007-05-09 23:59:59 округляется до 2007-05-10 00:00:00 |
Диапазоны элементов |
ГГГГ — четырехзначное число от 1900 до 2079, представляющее год. ММ обозначает 2 цифры, которые представляют месяц и принимают значения от 01 до 12. Обозначение ДД состоит из двух цифр, представляющих день указанного месяца, и принимает значения от 01 до 31 в зависимости от месяца. Обозначение чч состоит из двух цифр, представляющих час, и принимает значения от 00 до 23. Обозначение мм состоит из двух цифр, представляющих минуту, и принимает значения от 00 до 59. Обозначение сс состоит из двух цифр, представляющих секунду, и принимает значения от 00 до 59. Значения, меньшие или равные 29,998 секунд, округляются до минуты в меньшую сторону; значения, равные или большие 29,999, округляются до минуты в большую сторону. |
Длина в символах |
Максимально 19 позиций |
Объем памяти |
4 байта, фиксированный. |
Точность |
Одна минута |
Значение по умолчанию |
1900-01-01 00:00:00 |
Календарь |
Григорианский (Не включает полный диапазон лет) |
Определяемая пользователем точность в долях секунды |
Нет |
Учет и сохранение смещения часового пояса |
Нет |
Учет перехода на летнее время |
Нет |
Соответствие стандартам ANSI и ISO 8601
smalldatetime не удовлетворяет стандартам ANSI и ISO 8601.
Преобразование данных типа Date и Time
При преобразовании в типы данных даты и времени SQL Server отвергает все значения, которые он не распознает как значения даты или времени. Дополнительные сведения об использовании функций CAST и CONVERT c данными типов даты и времени см. в разделе Функции CAST и CONVERT (Transact-SQL).
Преобразование типа smalldatetime в другие типы данных даты и времени
В следующей таблице показано, каким образом тип данных smalldatetime преобразуется в другие типы даты и времени.
Тип данных, в который выполняется преобразование |
Дополнительные сведения о преобразовании |
---|---|
date |
Год, месяц и день копируются. Следующий код демонстрирует результаты преобразования значения smalldatetime в значение date.
|
time(n) |
Копируются часы, минуты и секунды. Доли секунды устанавливаются в значение 0. Следующий код демонстрирует результаты преобразования значения smalldatetime в значение time(4).
|
datetime |
Значение smalldatetime копируется из значения datetime. Доли секунды устанавливаются в значение 0. Следующий код демонстрирует результаты преобразования значения smalldatetime в значение datetime.
|
datetimeoffset(n) |
Значение smalldatetime копируется из значения datetimeoffset(n). Для долей секунды устанавливается значение 0; для смещения часового пояса устанавливается значение +00:0. Следующий код демонстрирует результаты преобразования значения smalldatetime в значение datetimeoffset(4).
|
datetime2(n) |
Значение smalldatetime копируется из значения datetime2(n). Доли секунды устанавливаются в значение 0. Следующий код демонстрирует результаты преобразования значения smalldatetime в значение datetime2(4).
|
Примеры
А.Приведение строковых литералов с секундами к типу smalldatetime
В следующем примере сравнивается преобразование секунд в строковых литералах в тип данных smalldatetime.
SELECT
CAST('2007-05-08 12:35:29' AS smalldatetime)
,CAST('2007-05-08 12:35:30' AS smalldatetime)
,CAST('2007-05-08 12:59:59.998' AS smalldatetime);
Ввод |
Вывод |
---|---|
2007-05-08 12:35:29 |
2007-05-08 12:35:00 |
2007-05-08 12:35:30 |
2007-05-08 12:36:00 |
2007-05-08 12:59:59.998 |
2007-05-08 13:00:00 |
Б.Сравнение типов данных даты и времени
В следующем примере сравниваются результаты приведения строкового типа к каждому из типов данных date и time.
SELECT
CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time'
,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date'
,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS
'smalldatetime'
,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime'
,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS
'datetime2'
,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS
'datetimeoffset';
Тип данных |
Вывод |
---|---|
time |
12:35:29. 1234567 |
date |
2007-05-08 |
smalldatetime |
2007-05-08 12:35:00 |
datetime |
2007-05-08 12:35:29.123 |
datetime2 |
2007-05-08 12:35:29. 1234567 |
datetimeoffset |
2007-05-08 12:35:29.1234567 +12:15 |