Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Система аналитической платформы (PDW)
SQL база данных в Microsoft Fabric
Определяет дату, сочетающуюся с временем дня. Время основано на 24-часовом дне, с секундами всегда ноль (:00) и без дробных секунд.
Note
Используйте время, даты, datetime2и типы данных datetimeoffset для новой работы. Эти типы соответствуют стандарту SQL, так как они более переносимы. Типы time, datetime2 и datetimeoffset обеспечивают большую точность секунд. datetimeoffset обеспечивает поддержку часовых поясов для приложений, развертываемых по всему миру.
smalldatetime описание
| Property | Value |
|---|---|
| Syntax | smalldatetime |
| Usage | 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 байта, исправлено |
| Accuracy | Минутку |
| Значение по умолчанию | 1900-01-01 00:00:00 |
| Calendar | Gregorian (Не включает полный диапазон лет.) |
| определяемая пользователем доля секундная точность | 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
Examples
A. Приведение строковых литерала с секундами к 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);
| Input | Output |
|---|---|
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';
| Тип данных | Output |
|---|---|
| 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 |