Введите Ваш E-mail адрес и Вы будете первым, кто получит новые статьи.

Статьи

дата (Transact-SQL)

  1. Соответствие ANSI и ISO 8601
  2. Обратная совместимость для клиентов нижнего уровня
  3. Примеры
  4. Смотрите также

ОТНОСИТСЯ К: ОТНОСИТСЯ К:   SQL Server   База данных SQL Azure   Хранилище данных SQL Azure   Параллельное хранилище данных   Определяет дату в SQL Server SQL Server База данных SQL Azure Хранилище данных SQL Azure Параллельное хранилище данных

Определяет дату в SQL Server.

Свойство Значение Синтаксис date Использование DECLARE @MyDate date
CREATE TABLE Table1 (Column1 date ) Формат строки по умолчанию
(используется для клиента нижнего уровня) ГГГГ-ММ-ДД
Дополнительные сведения см. В следующем разделе «Обратная совместимость для клиентов нижнего уровня». Диапазон от 0001-01-01 до 9999-12-31 (1582-10-15 до 9999-12-31 для Informatica)
1 января 1 года CE (Common Era) до 31 декабря 9999 года CE (15 октября 1582 года CE до 31 декабря 9999 года CE для Informatica) Диапазоны элементов YYYY - это четыре цифры от 0001 до 9999, обозначающие год. Для Informatica YYYY ограничен диапазоном от 1582 до 9999.
MM это две цифры от 01 до 12, которые представляют месяц в указанном году.
DD - это две цифры от 01 до 31, в зависимости от месяца, который представляет день указанного месяца. Длина символа 10 позиций Точность, масштаб 10, 0 Размер хранилища 3 байта, фиксированная Структура хранения 1, 3-байтовое целое число хранит дату. Точность Один день Значение по умолчанию 1900-01-01
Это значение используется для добавленной части даты для неявного преобразования времени в datetime2 или datetimeoffset . Календарь Григорианский Определяемая пользователем точность в долях секунды Нет Информация о смещении часового пояса и сохранение Нет Присутствует летнее время Нет

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

Числовое описание mdy
[М] м / дд / [уу] уу
[М] м-dd- [уу] уу
[М] m.dd. [уу] уу
MYD
/ [Уу] уу / дд мм
мм- [уу] / дд уу
[М] м. [Уу] yy.dd
ДМГ
дд / [м] м / [уу] уу
dd- [м] м- [уу] уу
дд. [м] м. [уу] уу
Дим
дд / [уу] уу / [м] м
dd- [уу] YY- [м] м
дд. [уу] уу. [м] м
YMD
дд [уу] уу / [м] м /
[Уу] YY- [м] м-дд
[yy] yy- [m] m-dd [m] m, dd и [yy] yy представляют месяц, день и год в строке с косыми чертами (/), дефисами (-) или периодами (.) в качестве разделителей.
Поддерживаются только четыре или две цифры года. Используйте четыре цифры года, когда это возможно. Чтобы указать целое число от 0001 до 9999, представляющее год отсечения для интерпретации двухзначных лет как четырехзначных, используйте Сконфигурируйте опцию конфигурации сервера отсечения двухзначного года ,
Заметка! Для Informatica YYYY ограничен диапазоном от 1582 до 9999.
Год, состоящий из двух цифр, который меньше или равен двум последним цифрам года сокращения, совпадает с годом окончания. Год, состоящий из двух цифр, больше, чем две последние цифры года среза, относится к веку, предшествующему году среза. Например, если отсчет двухзначного года является значением по умолчанию 2049, двухзначный год 49 интерпретируется как 2049, а двузначный год 50 интерпретируется как 1950.
Формат даты по умолчанию определяется текущей настройкой языка. Вы можете изменить формат даты, используя УСТАНОВИТЬ ЯЗЫК а также SET DATEFORMAT заявления.
Формат ydm не поддерживается для даты . Алфавитное описание mon [dd] [,] гггг
пн дд [,] [гг
монгггг [дд]
[дд] пн [,] гггг
дд мон [,] [гг] гг
дд [гг] гг гг
[дд] гггг пн
гггг мон [дд]
yyyy [dd] mon mon представляет полное название месяца или сокращение месяца на текущем языке. Запятые являются необязательными, а заглавные буквы игнорируются.
Чтобы избежать двусмысленности, используйте четыре цифры года.
Если день отсутствует, указывается первый день месяца. ISO 8601 Описание ГГГГ-ММ-ДД
ГГГГММДД То же, что и стандарт SQL. Этот формат является единственным форматом, определенным в качестве международного стандарта. Неразделенное описание [гг] гггммд
гггг [мм] [дд] Данные даты могут быть указаны с четырьмя, шестью или восемью цифрами. Строка из шести или восьми цифр всегда интерпретируется как ymd . Месяц и день всегда должны состоять из двух цифр. Четырехзначная строка интерпретируется как год. Описание ODBC {d 'yyyy-mm-dd'} Спецификация ODBC API. W3C XML формат Описание yyyy-mm-ddTZD Поддерживается для использования XML / SOAP.
TZD - обозначение часового пояса (Z или + чч: мм или -чч: мм):
- чч: мм представляет смещение часового пояса. hh - две цифры в диапазоне от 0 до 14, которые представляют количество часов в смещении часового пояса.
- MM - это две цифры в диапазоне от 0 до 59, которые представляют количество дополнительных минут в смещении часового пояса.
- + (плюс) или - (минус) обязательный знак смещения часового пояса. Этот знак указывает, что для получения местного времени смещение часового пояса добавляется или вычитается из времени по Гринвичу (UTC). Допустимый диапазон смещения часового пояса составляет от -14: 00 до +14: 00.

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

date соответствует стандартному определению ANSI SQL для григорианского календаря: «ПРИМЕЧАНИЕ 85. Типы данных Datetime позволят хранить даты в григорианском формате в диапазоне дат от 0001-01-01 CE до 9999-12-31 CE».

Формат строкового литерала по умолчанию, который используется для клиентов нижнего уровня, соответствует стандартной форме SQL, определенной как ГГГГ-ММ-ДД. Этот формат соответствует определению ISO 8601 для DATE.

Заметка

Для Informatica диапазон ограничен 1582-10-15 (15 октября 1582 г. н.э.) до 9999-12-31 (31 декабря 9999 н.э.).

Обратная совместимость для клиентов нижнего уровня

Некоторые клиенты нижнего уровня не поддерживают типы данных time , date , datetime2 и datetimeoffset . В следующей таблице показано сопоставление типов между экземпляром SQL Server верхнего уровня и клиентами нижнего уровня.

Тип данных SQL Server Строковый литеральный формат по умолчанию передается клиенту нижнего уровня ODBC нижнего уровня OLEDB нижнего уровня JDBC нижнего уровня Время SQLCLIENT нч: мм: сс [.nnnnnnnn] SQL_WVARCHAR или SQL_VARCHAR DBTYPE_WSTRor DBTYPE_STR Java.sql.String Строковая или SqString дата ГГГГ-ММ-ДД SQL_WVARCHAR или SQL_VARCHAR DBTYPE_WSTRor DBTYPE_STR Java.sql.String Строка или SqString datetime2 ГГГГ-ММ-ДД чч: мм: сс [.nnnnnnn] SQL_WVARCHAR или SQLString_D_R_WR_STR_STR_STR_STR_STR_STR_RING_RQ_RING_RQ_RQ_R_RQ_R_RQ_R_R_R_RQ_R_R_RQ_RQ_R_R_R_R_R_R_R_R_S_R_R_R_R_R_R__R datetimeoffset ГГГГ-ММ-ДД чч: мм: сс [.nnnnnnn] [+ | -] чч: мм SQL_WVARCHAR или SQL_VARCHAR DBTYPE_WSTRor DBTYPE_STR Java.sql.String String или SqString

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

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

Когда преобразование выполняется во время (n) , преобразование завершается неудачно, и появляется сообщение об ошибке 206: «Тип операнда clash: дата несовместима со временем».

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

ОБЪЯВИТЬ @date date = '12 -10-25 '; DECLARE @datetime datetime = @date; ВЫБЕРИТЕ @date AS '@date', @datetime AS '@datetime'; --Результат - @ date @datetime ------------ ----------------------- --2025-12- 10 2025-12-10 00: 00: 00.000 - - (затронут 1 ряд)

Когда преобразование происходит в smalldatetime , значение даты находится в диапазоне smalldatetime , компонент даты копируется, а компонент времени устанавливается на 00: 00: 00.000. Когда значение даты находится вне диапазона значения smalldatetime , выдается сообщение об ошибке 242: «Преобразование типа данных даты в типы данных smalldatetime привело к значению вне допустимого диапазона.»; и значение smalldatetime установлено в NULL. Следующий код показывает результаты преобразования значения даты в значение smalldatetime.

DECLARE @date date = '1912-10-25'; DECLARE @smalldatetime smalldatetime = @date; ВЫБЕРИТЕ @date AS '@date', @smalldatetime AS '@smalldatetime'; --Результат - @ date @smalldatetime ------------ ----------------------- --1912-10- 25 1912-10-25 00:00:00 - - (затронут 1 ряд)

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

DECLARE @date date = '1912-10-25'; DECLARE @datetimeoffset datetimeoffset (3) = @date; ВЫБЕРИТЕ @date AS '@date', @datetimeoffset AS '@datetimeoffset'; --Результат - @ date @datetimeoffset ------------ ----------------------------- - --1912-10-25 1912-10-25 00: 00: 00.000 +00: 00 - - (затронут 1 ряд)

Когда преобразование выполняется в datetime2 (n) , компонент даты копируется, а компонент времени устанавливается на 00: 00.000000. В следующем коде показаны результаты преобразования значения даты в значение datetime2 (3).

DECLARE @ date дата = '1912-10-25' DECLARE @ datetime2 datetime2 (3) = @date; ВЫБЕРИТЕ @date AS '@date', @ datetime2 AS '@ datetime2 (3)'; --Результат - @ date @ datetime2 (3) ------------ ----------------------- --1912 -10-25 1912-10-25 00: 00: 00.000 - - (затронут 1 ряд)

Преобразования из строковых литералов в типы даты и времени допускаются, если все части строк имеют допустимые форматы. В противном случае возникает ошибка во время выполнения. Неявные преобразования или явные преобразования, которые не определяют стиль, от типов даты и времени до строковых литералов, будут в формате по умолчанию текущего сеанса. В следующей таблице приведены правила преобразования строкового литерала в тип данных date .

Входная строковый литерал date ODBC DATE Строковые литералы ODBC отображаются на тип данных datetime . Любая операция присваивания из литералов ODBC DATETIME в тип даты вызывает неявное преобразование между datetime и типом, определяемым правилами преобразования. ODBC TIME См. Предыдущее правило ODBC DATE. ODBC DATETIME См. Предыдущее правило ODBC DATE. Только ДАТА Только тривиальное ВРЕМЯ. Только TIMEZONE Значения по умолчанию предоставляются. DATE + TIME Используется часть DATE входной строки. ДАТА + ВРЕМЯ ЗОНА Не допускается. TIME + TIMEZONE Значения по умолчанию предоставляются. DATE + TIME + TIMEZONE Будет использоваться часть DATE локального DATETIME.

Примеры

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

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) AS' дата ', 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 ';

Вот набор результатов.

Тип данных Время выхода 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)

Новости