Новости

date (Transact-SQL) - SQL Server

  1. Відповідність стандартам ANSI і ISO 8601 ANSI and ISO 8601 compliance
  2. Зворотна сумісність для клієнтів нижнього рівня Backward compatibility for down-level clients
  3. приклади Examples
  4. Див. Також розділ See also

ОБЛАСТЬ ЗАСТОСУВАННЯ: ОБЛАСТЬ ЗАСТОСУВАННЯ:   SQL Server   База даних SQL Azure   Сховище даних SQL Azure   Parallel Data Warehouse APPLIES TO:   SQL Server   Azure SQL Database   Azure SQL Data Warehouse   Parallel Data Warehouse   Визначає дату в SQL Server SQL Server SQL Server База даних SQL Azure Сховище даних SQL Azure Parallel Data Warehouse APPLIES TO: SQL Server Azure SQL Database Azure SQL Data Warehouse Parallel Data Warehouse

Визначає дату в SQL Server SQL Server. Defines a date in SQL Server SQL Server.

Властивість Property Значення Value Синтаксис Syntax date date Використання Usage DECLARE @MyDate date DECLARE @MyDate date
CREATE TABLE Таблица1 (Столбец1 date) CREATE TABLE Table1 (Column1 date) Формат строкових літералів за замовчуванням Default string literal format
(Використовується для клієнта нижнього рівня) (used for down-level client) РРРР-ММ-ДД YYYY-MM-DD
Додаткові відомості див. У підрозділі «Зворотна сумісність для клієнтів низького рівня» наступного розділу. For more information, see the "Backward Compatibility for Down-level Clients" section that follows. Діапазон Range Від 0001-01-01 до 9999-12-31 (від 1582-10-15 до 9999-12-31 для Informatica) 0001-01-01 through 9999-12-31 (1582-10-15 through 9999- 12-31 for Informatica)
От 1 січня 1 року до 31 грудня 9999 року нашої ери (від 15 жовтня 1582 року до 31 грудня 9999 року для Informatica). January 1, 1 CE (Common Era) through December 31, 9999 CE (October 15, +1582 CE through December 31, 9999 CE for Informatica) Діапазони елементів Element ranges РРРР позначає 4 цифри, які представляють рік і приймають значення від 0001 до 9999. YYYY is four digits from 0001 to 9999 that represent a year. Для Informatica значення РРРР обмежена діапазоном від +1582 до 9999. For Informatica, YYYY is limited to the range +1582 to 9999.
ММ позначає 2 цифри, які представляють місяць і приймають значення від 01 до 12. MM is two digits from 01 to 12 that represent a month in the specified year.
ДД позначає дві цифри, що представляють день зазначеного місяця, і приймає значення від 01 до 31 в залежності від місяця. DD is two digits from 01 to 31, depending on the month, that represents a day of the specified month. Довжина в символах Character length 10 позицій 10 positions Точність, масштаб Precision, scale 10, 0 10, 0 Об'єм пам'яті Storage size 3 байта, фіксований 3 bytes, fixed Структура сховища Storage structure Дата зберігається в одній змінної типу integer розміром 1 або 3 байти. 1, 3-byte integer stores date. Точність Accuracy Один день One day Значення за замовчуванням Default value 1900-01-01 1900-01-01
Це значення використовується як приєднується частина дати при неявному перетворенні даних типу time в значення типу datetime2 або datetimeoffset. This value is used for the appended date part for implicit conversion from time to datetime2 or datetimeoffset . Календар Calendar Григоріанський Gregorian Обумовлена ​​користувачем точність в частках секунди User-defined fractional second precision ні No Облік і збереження зміщення часового поясу Time zone offset aware and preservation ні No Облік переходу на літній час Daylight saving aware ні No

У наведеній нижче таблиці перераховані допустимі формати строкових літералів для типу даних date. The following tables show the valid string literal formats for the date data type .

Числовий Numeric Опис Description mdy mdy
[М] м / дд / [рр] рр [m] m / dd / [yy] yy
[М] м-дд- [рр] рр [m] m-dd- [yy] yy
[М] м.дд. [рр] рр [m] m.dd. [yy] yy
МГД myd
мм / [рр] рр / дд mm / [yy] yy / dd
мм-[рр] рр / дд mm- [yy] yy / dd
[М] м. [Рр] гг.дд [m] m. [Yy] yy.dd
ДМГ dmy
дд / [м] м / [рр] рр dd / [m] m / [yy] yy
дд- [м] м- [рр] рр dd- [m] m- [yy] yy
дд. [м] м. [рр] рр dd. [m] m. [yy] yy
ДГМ dym
дд / [рр] рр / [м] м dd / [yy] yy / [m] m
дд- [рр] гг- [м] м dd- [yy] yy- [m] m
дд. [рр] рр. [м] м dd. [yy] yy. [m] m
ГМД ymd
[Рр] рр / [м] м / дд [yy] yy / [m] m / dd
[Рр] гг- [м] м-дд [yy] yy- [m] m-dd
[Рр] гг- [м] м-дд [yy] yy- [m] m-dd Сполучення [м] м, дд і [рр] рр представляють в рядку місяць, день і рік, розділені косою рискою (/) , дефісом (-) або точкою (.). [M] m, dd, and [yy] yy represent month, day, and year in a string with slash marks (/), hyphens (-), or periods (.) As separators.
Підтримуються тільки дво- і чотиризначні формати запису року. Only four- or two-digit years are supported. Для запису року рекомендується завжди використовувати чотиризначний формат. Use four-digit years whenever possible. Щоб вказати ціле число в проміжку від 0001 до 9999, що представляє порогове значення року при перетворенні двухзначной записи в чотиризначну, необхідно використовувати параметр конфігурації сервера two digit year cutoff . To specify an integer from 0001 to 9999 that represents the cutoff year for interpreting two-digit years as four-digit years, use the Configure the two digit year cutoff Server Configuration Option .
Примітка. Note! Для Informatica значення РРРР обмежена діапазоном від +1582 до 9999. For Informatica, YYYY is limited to the range +1582 to 9999.
Якщо двозначне число, що позначає рік, менше або дорівнює двозначного числа з останніх двох цифр порогового року, рік відноситься до того ж сторіччя, що і пороговий рік. A two-digit year that is less than or equal to the last two digits of the cutoff year is in the same century as the cutoff year. Якщо двозначне число, що позначає рік, більше двозначного числа з останніх двох цифр порогового року, рік відноситься до сторіччя, яке передує сторіччя порогового року. A two-digit year greater than the last two digits of the cutoff year is in the century that comes before the cutoff year. Наприклад, якщо граничне значення року для двозначної записи одно 2049, то рік, позначений двома цифрами 49, інтерпретується як 2049, а рік, позначений двома цифрами 50, інтерпретується як 1950. For example, if the two-digit year cutoff is the default 2049 , the two-digit year 49 is interpreted as 2049 and the two-digit year 50 is interpreted as 1950.
Формат дати за замовчуванням визначається поточними настройками мовних стандартів. The default date format is determined by the current language setting. Формат дати можна змінити за допомогою інструкцій SET LANGUAGE і SET DATEFORMAT . You can change the date format by using the SET LANGUAGE and SET DATEFORMAT statements.
Формат ГДМ не підтримує для типу даних date. The ydm format is not supported for date. Алфавітний формат Alphabetical Опис Description міс [дд] [,] рррр mon [dd] [,] yyyy
міс дд [,] [рр mon dd [,] [yy
міс рррр [дд] mon yyyy [dd]
[Дд] міс [,] рррр [dd] mon [,] yyyy
дд міс [,] [рр] рр dd mon [,] [yy] yy
дд [рр] рр міс dd [yy] yy mon
[Дд] рррр міс [dd] yyyy mon
рррр міс [дд] yyyy mon [dd]
рррр [дд] міс yyyy [dd] mon Значення міс означає повну або скорочену назву місяця на поточному мовою. mon represents the full month name or the month abbreviation given in the current language . Коми є необов'язковими, регістр букв не враховується. Commas are optional and capitalization is ignored.
Щоб уникнути неоднозначності використовуйте чотиризначну запис року. To avoid ambiguity, use four-digit years.
Якщо не вказано число місяця, мається на увазі перше число місяця. If the day is missing, the first day of the month is supplied. ISO 8601 ISO 8601 Опис Description РРРР-ММ-ДД YYYY-MM-DD
РРРРММДД YYYYMMDD Те ж, що і стандарт SQL. Same as the SQL standard. Цей формат є єдиним міжнародним стандартом. This format is the only format defined as an international standard. Без роздільників Unseparated Опис Description [рр] ГГММДД [yy] yymmdd
рррр [мм] [дд] yyyy [mm] [dd] Дані типу date можуть бути визначені за допомогою чотирьох, шести або восьми цифр. The date data can be specified with four, six, or eight digits. Рядок з шести або восьми цифр завжди інтерпретується як ГМД. A six- or eight-digit string is always interpreted as ymd. На місяць і день завжди має припадати по дві цифри. The month and day must always be two digits. Рядок з чотирьох цифр сприймається як значення року. A four-digit string is interpreted as year. інтерфейс ODBC ODBC Опис Description {д 'рррр-мм-дд'} {d 'yyyy-mm-dd'} Залежить від API-інтерфейсу ODBC. ODBC API specific. Формат W3C XML W3C XML format Опис Description рррр-мм-ддTZD yyyy-mm-ddTZD Введено для використання в XML і SOAP. Supported for XML / SOAP usage.
TZD означає часовий пояс (у вигляді номера або зміщення + чч: мм і -чч: мм): TZD is the time zone designator (Z or + hh: mm or -hh: mm):
- "чч: мм" позначає зсув годинного пояса. - hh: mm represents the time zone offset. чч - двозначне число від 0 до 14, що представляє кількість годин в зміщенні часового поясу. hh is two digits, ranging from 0 to 14, that represent the number of hours in the time zone offset.
- Позначення "мм" складається з двох цифр, які представляють додаткове зміщення часового поясу в хвилинах, і приймає значення від 0 до 59. - MM is two digits, ranging from 0 to 59, that represent the number of additional minutes in the time zone offset .
- + (плюс) або - (мінус) являє собою обов'язковий знак зсуву часового поясу. - + (plus) or - (minus) the mandatory sign of the time zone offset. Цей символ вказує на, додається або віднімається зсув годинного пояса від часу в форматі UTC, щоб отримати локальний час. This sign indicates that, to obtain the local time, the time zone offset is added or subtracted from the Coordinated Universal Times (UTC) time. Допустимий діапазон зсуву часового поясу: від -14: 00 до +14: 00. The valid range of time zone offset is from -14: 00 to +14: 00.

Відповідність стандартам ANSI і ISO 8601 ANSI and ISO 8601 compliance

Значення date відповідає стандартному визначенню ANSI SQL для григоріанського календаря: "Зауваження 85 - дані типу Datetime дозволяють зберігати дати григоріанського календаря у вигляді чисел діапазону від 0001-01-01 CE до 9999-12-31 CE". date complies with the ANSI SQL standard definition for the Gregorian calendar : "NOTE 85 - Datetime data types will allow dates in the Gregorian format to be stored in the date range 0001-01-01 CE through 9999-12-31 CE."

Формат строкових літералів, яка буде використовуватися для клієнтів низького рівня, відповідає стандарту SQL, в якому він визначений як РРРР-ММ-ДД. The default string literal format, which is used for down-level clients, complies with the SQL standard form that is defined as YYYY-MM-DD. Даний формат аналогічний визначенню дати в стандарті ISO 8601. This format is the same as the ISO 8601 definition for DATE.

Примітка

Для Informatica діапазон обмежений інтервалом від 1582-10-15 (15 жовтня 1582 г.) до 9999-12-31 (31 грудня 9999 г.). For Informatica, the range is limited to 1582-10-15 (October 15, тисяча п'ятсот вісімдесят-два CE) to 9999-12-31 (December 31, 9999 CE).

Зворотна сумісність для клієнтів нижнього рівня Backward compatibility for down-level clients

Деякі клієнти нижнього рівня не підтримують типи даних time, date, datetime2 і datetimeoffset. Some down-level clients do not support the time, date, datetime2, and datetimeoffset data types. У наступній таблиці показано зіставлення типів примірника більш високого рівня SQL Server SQL Server і клієнтів низького рівня. The following table shows the type mapping between an up-level instance of SQL Server SQL Server and down-level clients.

Тип даних SQL Server SQL Server SQL Server SQL Server data type Формат строкового литерала за замовчуванням, який передається клієнту низького рівня Default string literal format passed to down-level client ODBC низького рівня Down-level ODBC OLEDB низького рівня Down-level OLEDB JDBC низького рівня Down -level JDBC SQLCLIENT низького рівня Down-level SQLCLIENT time time чч: мм: сс [.ннннннн] hh: mm: ss [.nnnnnnn] SQL_WVARCHAR або SQL_VARCHAR SQL_WVARCHAR or SQL_VARCHAR DBTYPE_WSTR або DBTYPE_STR DBTYPE_WSTRor DBTYPE_STR Java.sql.String Java.sql. String String або SqString String or SqString date date РРРР-ММ-ДД YYYY-MM-DD SQL_WVARCHAR або SQL_VARCHAR SQL_WVARCHAR or SQL_VARCHAR DBTYPE_WSTR або DBTYPE_STR DBTYPE_WSTRor DBTYPE_STR Java.sql.String Java.sql.String String або SqString String or SqString datetime2 datetime2 ГГГГ- ММ-Д чч: мм: сс [.ннннннн] YYYY-MM-DD hh: mm: ss [.nnnnnnn] SQL_WVARCHAR або SQL_VARCHAR SQL_WVARCHAR or SQL_VARCHAR DBTYPE_WSTR або DBTYPE_STR DBTYPE_WSTRor DBTYPE_STR Java.sql.String Java.sql.String String або SqString String or SqString datetimeoffset datetimeoffset РРРР-мМ-ДД гг: мм: сс [.ннннннн] [+ | -] чч: мм YYYY-MM-DD hh: mm: ss [.nnnnnnn] [+ | -] hh: mm SQL_WVARCHAR або SQL_VARCHAR SQL_WVARCHAR or SQL_VARCHAR DBTYPE_WSTR або DBTYPE_STR DBTYPE_WSTRor DBTYPE_STR Java.sql.String Java.sql.String String або SqString String or SqString

При перетворенні в типи даних дати і часу SQL Server SQL Server відкидає всі значення, які він не розпізнає як значення дати або часу. When you convert to date and time data types, SQL Server SQL Server rejects all values ​​it does not recognize as dates or times. Відомості про використання функцій CAST і CONVERT c даними типів дати і часу см. В статті Функції CAST і CONVERT (Transact-SQL) . For information about using the CAST and CONVERT functions with date and time data, see CAST and CONVERT (Transact-SQL) .

У цьому розділі описується, що відбувається при перетворенні типу даних date в інші типи дати і часу. This section describes what occurs when you convert a date data type to other date and time data types .

Перетворення в time (n) завершується збоєм, і з'являється повідомлення про помилку 206: "Конфлікт типів операндів: date несумісний з time". When the conversion is to time (n), the conversion fails, and error message 206 is raised: "Operand type clash: date is incompatible with time".

При перетворенні в datetime копіюється дата. If the conversion is to datetime, date is copied. Наступний код демонструє результати перетворення значення date в значення datetime. The following code shows the results of converting a date value to a datetime value.

DECLARE @date date = '12 -10-25 '; DECLARE @datetime datetime = @date; SELECT @date AS '@date', @datetime AS '@datetime'; --Result - @ date @datetime ------------ ----------------------- --2025-12- 10 2025-12-10 00: 00: 00.000 - - (1 row (s) affected)

Якщо при перетворенні в smalldatetime значення типу date знаходиться в діапазоні значень smalldatetime , Компонент дати копіюється, а для компонента часу встановлюється значення 00: 00: 00.000. When the conversion is to smalldatetime, the date value is in the range of a smalldatetime , The date component is copied, and the time component is set to 00: 00: 00.000. Якщо значення date виходить за діапазон значень smalldatetime, виводиться повідомлення про помилку 242: "Перетворення типу даних date в тип даних smalldatetime призвело до появи значення, що виходить за діапазон допустимих значень". Після цього для значення типу smalldatetime встановлюється значення NULL. When the date value is outside the range of a smalldatetime value , error message 242 is raised: "The conversion of a date data type to a smalldatetime data types resulted in an out -of-range value."; and the smalldatetime value is set to NULL. Наступний код демонструє результати перетворення значення date в значення smalldatetime. The following code shows the results of converting a date value to a smalldatetime value.

DECLARE @date date = '1912-10-25'; DECLARE @smalldatetime smalldatetime = @date; SELECT @date AS '@date', @smalldatetime AS '@smalldatetime'; --Result - @ date @smalldatetime ------------ ----------------------- --1912-10- 25 1912-10-25 00:00:00 - - (1 row (s) affected)

При перетворенні в datetimeoffset (n) дата копіюється, а для часу встановлюється значення 00: 00.0000000 +00: 00. For conversion to datetimeoffset (n), date is copied, and the time is set to 00: 00.0000000 +00: 00. Наступний код демонструє результати перетворення значення date в значення datetimeoffset (3). The following code shows the results of converting a date value to a datetimeoffset (3) value.

DECLARE @date date = '1912-10-25'; DECLARE @datetimeoffset datetimeoffset (3) = @date; SELECT @date AS '@date', @datetimeoffset AS '@datetimeoffset'; --Result - @ date @datetimeoffset ------------ ----------------------------- - --1912-10-25 1912-10-25 00: 00: 00.000 + 00: 00 - - (1 row (s) affected)

При перетворенні в datetime2 (n) компонент дати копіюється, а для компонента часу встановлюється значення 00: 00.000000. When the conversion is to datetime2 (n), the date component is copied, and the time component is set to 00: 00.000000. Наступний код демонструє результати перетворення значення date в значення datetime2 (3). The following code shows the results of converting a date value to a datetime2 (3) value.

DECLARE @date date = '1912-10-25' DECLARE @ datetime2 datetime2 (3) = @date; SELECT @date AS '@date', @ datetime2 AS '@ datetime2 (3)'; --Result - @ date @ datetime2 (3) ------------ ----------------------- --1912 -10-25 1912-10-25 00: 00: 00.000 - - (1 row (s) affected)

Перетворення строкових літералів в типи даних дати і часу дозволяється, якщо всі частини рядків записані в допустимому форматі. Conversions from string literals to date and time types are allowed if all parts of the strings are in valid formats. Інакше виникає помилка часу виконання. Otherwise, a runtime error is raised. Явні чи приховані перетворення, в яких не заданий стиль перетворення типів даних дати і часу в рядкові літерали, будуть проведені в форматі за замовчуванням для поточного сеансу. Implicit conversions or explicit conversions that do not specify a style, from date and time types to string literals will be in the default format of the current session. У таблиці нижче приводяться правила перетворення строкових літералів в тип даних date. The following table shows the rules for converting a string literal to the date data type .

Строковий літерал входу Input string literal date date ODBC DATE ODBC DATE Строкові літерали ODBC зіставляються з типом даних datetime. ODBC string literals are mapped to the datetime data type . Будь-яка операція присвоювання литералов ODBC DATETIME типу даних date викликає неявне перетворення між даним типом і типом datetime згідно з правилами перетворення. Any assignment operation from ODBC DATETIME literals into a date type causes an implicit conversion between datetime and the type that the conversion rules define . ODBC TIME ODBC TIME Див. Попереднє правило ODBC DATE. See previous ODBC DATE rule. ODBC DATETIME ODBC DATETIME Див. Попереднє правило ODBC DATE. See previous ODBC DATE rule. тільки DATE DATE only Найпростіший. Trivial тільки TIME TIME only Вказані значення за замовчуванням. Default values ​​are supplied. тільки TIMEZONE TIMEZONE only Вказані значення за замовчуванням. Default values ​​are supplied. DATE + TIME DATE + TIME Використовується компонент DATE вхідного рядка. The DATE part of the input string is used. DATE + TIMEZONE DATE + TIMEZONE Не допускається. Not allowed. TIME + TIMEZONE TIME + TIMEZONE Вказані значення за замовчуванням. Default values ​​are supplied. DATE + TIME + TIMEZONE DATE + TIME + TIMEZONE Використовується компонент DATE локального значення DATETIME. The DATE part of local DATETIME will be used.

приклади Examples

У наступному прикладі порівнюються результати приведення строкового типу до кожного з типів даних date і time. The following example compares the results of casting a string to each date and time data type.

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 ';

Нижче наводиться результуючий набір. Here is the result set.

Тип даних Data type Висновок Output time time 12:35:29. 12:35:29. 1234567 1234567 date date 2007-05-08 2007-05-08 smalldatetime smalldatetime 2007-05-08 12:35:00 2007-05-08 12:35:00 datetime datetime 2007-05-08 12: 35: 29.123 2007- 05-08 12: 35: 29.123 datetime2 datetime2 2007-05-08 12:35:29. 2007-05-08 12:35:29. 1234567 1234567 datetimeoffset datetimeoffset 2007-05-08 12: 35: 29.1234567 +12: 15 2007-05-08 12: 35: 29.1234567 +12: 15

Див. Також розділ See also

Функції CAST і CONVERT (Transact-SQL) CAST and CONVERT (Transact-SQL)

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

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: