Поделиться через


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.

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @date date = @smalldatetime
SELECT @smalldatetime AS '@smalldatetime', @date AS 'date';
--Result
--@smalldatetime          date
------------------------- ----------
--1955-12-13 12:43:00     1955-12-13
--
--(1 row(s) affected)

time(n)

Копируются часы, минуты и секунды. Доли секунды устанавливаются в значение 0.

Следующий код демонстрирует результаты преобразования значения smalldatetime в значение time(4).

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @time time(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @time AS 'time';
--Result
--@smalldatetime          time
------------------------- -------------
--1955-12-13 12:43:00     12:43:00.0000
--
--(1 row(s) affected)

datetime

Значение smalldatetime копируется из значения datetime. Доли секунды устанавливаются в значение 0.

Следующий код демонстрирует результаты преобразования значения smalldatetime в значение datetime.

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetime datetime = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetime AS 'datetime';
--Result
--@smalldatetime          datetime
------------------------- -----------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.000
--
--(1 row(s) affected)

datetimeoffset(n)

Значение smalldatetime копируется из значения datetimeoffset(n). Для долей секунды устанавливается значение 0; для смещения часового пояса устанавливается значение +00:0.

Следующий код демонстрирует результаты преобразования значения smalldatetime в значение datetimeoffset(4).

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetimeoffset datetimeoffset(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetimeoffset AS 'datetimeoffset(4)';
--Result
--@smalldatetime          datetimeoffset(4)
------------------------- ------------------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.0000 +00:0
--
--(1 row(s) affected)

datetime2(n)

Значение smalldatetime копируется из значения datetime2(n). Доли секунды устанавливаются в значение 0.

Следующий код демонстрирует результаты преобразования значения smalldatetime в значение datetime2(4).

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetime2 datetime2(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetime2 AS ' datetime2(4)';
--Result
--@smalldatetime           datetime2(4)
------------------------- ------------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.0000
--
--(1 row(s) affected)

Примеры

А.Приведение строковых литералов с секундами к типу 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

См. также

Справочник

Функции CAST и CONVERT (Transact-SQL)