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


smalldatetime (Transact-SQL)

применимо:Базе данных SQL AzureУправляемый экземпляр SQL AzureAzure Synapse AnalyticsПлатформенная система аналитики (PDW)базы данных SQL в Microsoft Fabric

Определяет дату, сочетающуюся с временем дня. Время основано на 24-часовом дне, с секундами всегда ноль (:00) и без дробных секунд.

Примечание.

Используйте время, даты, datetime2и типы данных datetimeoffset для новой работы. Эти типы соответствуют стандарту SQL, так как они более переносимы. Типы time, datetime2 и datetimeoffset обеспечивают большую точность секунд. datetimeoffset обеспечивает поддержку часовых поясов для приложений, развертываемых по всему миру.

Описание типа данных smalldatetime

Свойство Значение
синтаксис smalldatetime
использование DECLARE @MySmallDateTime SMALLDATETIME;

CREATE TABLE Table1 (Column1 SMALLDATETIME);
форматы строковых литералов по умолчанию
(используется для клиента нижнего уровня)
Нет данных
диапазон дат 1900-01-01 2079-06-06

1 января 1900 года — 6 июня 2079 года
диапазона времени 00:00:00 23:59:59

2024-05-09 23:59:59 округляется до 2024-05-10 00:00:00
диапазоны элементов yyyy четыре цифры, начиная с 1900 по 2079 год, что представляет год.

MM — это две цифры, начиная от 01 до 12, которая представляет месяц в указанном году.

dd — это две цифры, начиная от 01 до 31 в зависимости от месяца, который представляет день указанного месяца.

HH — это две цифры, начиная от 00 до 23, что представляет час.

mm — это две цифры, начиная от 00 до 59, что представляет минуту.

ss — это две цифры, начиная от 00 до 59, которая представляет второй. Значения 29,998 с или меньше округляются до ближайшей минуты. Значения 29,999 с или больше округляются до ближайшей минуты.
длина символов Максимально 19 позиций
размер хранилища 4 байта, исправлено
точности Одна минута
значение по умолчанию 1900-01-01 00:00:00
календаря Григорианский

(Не включает полный диапазон лет.)
определяемая пользователем доля секундная точность No
смещение часового пояса с учетом и сохранением No
с учетом No

Соответствие ANSI и ISO 8601

smalldatetime не удовлетворяет стандартам ANSI и ISO 8601.

Преобразование данных даты и времени

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

Преобразование smalldatetime в другие типы даты и времени

В этом разделе описывается, что происходит при преобразовании типа данных smalldatetime в другие типы даты и времени.

Для преобразования в тип date копируются год, месяц и день. В следующем коде показаны результаты преобразования значения smalldatetime в значение даты.

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @date AS DATE = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @date AS 'date';

Вот результирующий набор.

@smalldatetime        date
--------------------- ----------
1955-12-13 12:43:00   1955-12-13

Когда преобразование выполняется в времени (n), часы, минуты и секунды копируются. Для дробных секунд задано значение 0. В следующем коде показаны результаты преобразования значения smalldatetime в значение времени (4).

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @time AS TIME (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @time AS 'time';

Вот результирующий набор.

@smalldatetime          time
----------------------- -------------
1955-12-13 12:43:00     12:43:00.0000

При преобразовании в тип datetime значение smalldatetime копируется в значение datetime. Для дробных секунд задано значение 0. В следующем коде показаны результаты преобразования значения smalldatetime в значение datetime.

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetime AS DATETIME = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetime AS 'datetime';

Вот результирующий набор.

@smalldatetime          datetime
----------------------- -----------------------
1955-12-13 12:43:00     1955-12-13 12:43:00.000

Для преобразования в datetimeoffset(n)значение smalldatetime копируется в значение datetimeoffset(n). Для дробных секунд задано значение 0, а для смещения часового пояса задано значение +00:0. В следующем коде показаны результаты преобразования значения smalldatetime в значение datetimeoffset(4).

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetimeoffset AS DATETIMEOFFSET (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetimeoffset AS 'datetimeoffset(4)';

Вот результирующий набор.

@smalldatetime        datetimeoffset(4)
--------------------- ------------------------------
1955-12-13 12:43:00   1955-12-13 12:43:00.0000 +00:0

При преобразовании в тип datetime2(n) значение smalldatetime копируется в значение datetime2(n). Для дробных секунд задано значение 0. В следующем коде показаны результаты преобразования значения smalldatetime в значение datetime2(4).

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetime2 AS DATETIME2 (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetime2 AS ' datetime2(4)';

Вот результирующий набор.

@smalldatetime        datetime2(4)
--------------------- ------------------------
1955-12-13 12:43:00   1955-12-13 12:43:00.0000

Примеры

А. Приведение строковых литерала с секундами к smalldatetime

В следующем примере сравнивается преобразование секунд в строковых литералах в smalldatetime.

SELECT CAST ('2024-05-08 12:35:29' AS SMALLDATETIME),
       CAST ('2024-05-08 12:35:30' AS SMALLDATETIME),
       CAST ('2024-05-08 12:59:59.998' AS SMALLDATETIME);
Входные данные Выходные данные
2024-05-08 12:35:29 2024-05-08 12:35:00
2024-05-08 12:35:30 2024-05-08 12:36:00
2024-05-08 12:59:59.998 2024-05-08 13:00:00

B. Сравнение типов данных даты и времени

В приведенном ниже примере сравниваются результаты приведения строкового типа к каждому из типов данных date и time.

SELECT CAST ('2024-05-08 12:35:29.1234567 +12:15' AS TIME (7)) AS 'time',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATE) AS 'date',
       CAST ('2024-05-08 12:35:29.123' AS SMALLDATETIME) AS 'smalldatetime',
       CAST ('2024-05-08 12:35:29.123' AS DATETIME) AS 'datetime',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATETIME2 (7)) AS 'datetime2',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATETIMEOFFSET (7)) AS 'datetimeoffset';
Тип данных Выходные данные
time 12:35:29.1234567
date 2024-05-08
smalldatetime 2024-05-08 12:35:00
datetime 2024-05-08 12:35:29.123
datetime2 2024-05-08 12:35:29.1234567
datetimeoffset 2024-05-08 12:35:29.1234567 +12:15