smalldatetime (Transact-SQL)
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
Определяет дату, сочетающуюся с временем дня. Время представлено в 24-часовом формате с секундами, всегда равными нулю (:00), без долей секунд.
Примечание.
Используйте для новых проектов типы данных time, date, datetime2 и datetimeoffset. Эти типы соответствуют стандарту языка SQL. Их проще переносить на другие платформы. Типы time, datetime2 и datetimeoffset обеспечивают большую точность секунд. datetimeoffset обеспечивает поддержку часовых поясов для приложений, развертываемых по всему миру.
Описание типа данных 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 байта, фиксированный. |
Правильность | Одна минута |
Default value | 1900-01-01 00:00:00 |
Календарь | Григорианский (Не включает полный диапазон лет.) |
Определяемая пользователем точность в долях секунды | No |
Учет и сохранение смещения часового пояса | No |
Учет перехода на летнее время | No |
Соответствие стандартам 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 |
B. Сравнение типов данных даты и времени
В приведенном ниже примере сравниваются результаты приведения строкового типа к каждому из типов данных 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 |