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
Для преобразования в 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 |