datetime (Transact-SQL)
Определяет дату, включающую время дня с долями секунды в 24-часовом формате.
Примечание |
---|
Используйте для новых проектов типы данных time, date, datetime2 и datetimeoffset. Эти типы соответствуют стандарту языка SQL. Их проще переносить на другие платформы. Функции time, datetime2 и datetimeoffset дают большую точность секунд. Функция datetimeoffset поддерживает часовые пояса для приложений, развернутых по всему миру. |
Обзор всех типов данных и функций даты и времени в языке Transact-SQL см. в разделе Типы данных и функции даты и времени (Transact-SQL). Сведения и примеры, относящиеся к типам данных и функциям даты и времени, см. в разделе Использование данных даты и времени.
Описание типа данных datetime
Свойство |
Значение |
---|---|
Синтаксис |
datetime |
Использование |
DECLARE @MyDatetime datetime CREATE TABLE Таблица1 ( Столбец1 datetime ) |
Форматы строковых литералов по умолчанию (используется для клиента нижнего уровня) |
Неприменимо |
Диапазон даты |
1 января 1753 года — 31 декабря 9999 года |
Диапазон времени |
От 00:00:00 до 23:59:590,997 |
Диапазон смещения часового пояса |
Нет |
Диапазоны элементов |
ГГГГ — четырехзначное число от 1753 до 9999, представляющее год. ММ обозначает 2 цифры, которые представляют месяц и принимают значения от 01 до 12. Обозначение ДД состоит из двух цифр, представляющих день указанного месяца, и принимает значения от 01 до 31 в зависимости от месяца. Обозначение чч состоит из двух цифр, представляющих час, и принимает значения от 00 до 23. Обозначение мм состоит из двух цифр, представляющих минуту, и принимает значения от 00 до 59. Обозначение сс состоит из двух цифр, представляющих секунду, и принимает значения от 00 до 59. Обозначение n* может содержать от нуля до трех цифр, представляющих доли секунды, и принимает значения от 0 до 999. |
Длина в символах |
Минимально 19 позиций, максимально — 23 |
Объем памяти |
8 байт |
Точность |
Округлено до приращения 0,000, 0,003 или 0,007 секунд |
Значение по умолчанию |
1900-01-01 00:00:00 |
Календарь |
Григорианский (не включает полный диапазон лет) |
Определяемая пользователем точность в долях секунды |
Нет |
Учет и сохранение смещения часового пояса |
Нет |
Учет перехода на летнее время |
Нет |
Поддерживаемые форматы строковых литералов для типа данных datetime
В следующих таблицах приводятся поддерживаемые форматы строковых литералов для типа данных datetime. За исключением ODBC, строковые литералы типа datetime заключаются в одинарные кавычки ('), например 'string_literaL'. Если язык среды не us_english, строковые литералы должны иметь формат «N'string_literaL'».
Numeric |
Описание |
---|---|
Форматы даты [0]4/15/[19]96 -- (мдг) [0]4-15-[19]96 -- (мдг) [0]4.15.[19]96 -- (мдг) [0]4/[19]96/15 -- (мгд) 15/[0]4/[19]96 -- (дмг) 15/[19]96/[0]4 -- (дгм) [19]96/15/[0]4 -- (гдм) [19]96/[0]4/15 -- (гмд) Форматы времени 14:30 14:30[:20:999] 14:30[:20.9] 04:00:00 16:00:00 |
Месяц в датах может указываться в числовом формате. Например, 20.05.97 означает двадцатое мая 1997 года. Указывая дату в числовом формате, разделяйте месяц, день и год символом косой черты (/), дефисом (-) или точкой (.). Эта строчка должна выглядеть следующим образом:
При использовании в качестве языковой настройки us_english порядком по умолчанию для даты является mdy (МДГ). Порядок даты можно изменить при помощи инструкции SET DATEFORMAT. Установка для SET DATEFORMAT определяет, как будут интерпретированы значения дат. Если порядок не соответствует параметру, значения не рассматриваются как даты, поскольку находятся вне допустимого диапазона или интерпретируются ошибочно. Например, 12/10/08 может быть интерпретировано как одна из шести различных дат в зависимости от установки DATEFORMAT. Четырехзначный год интерпретируется как год. |
Алфавитный |
Описание |
---|---|
Apr[il] [15][,] 1996 Apr[il] 15[,] [19]96 Apr[il] 1996 [15] [15] Apr[il][,] 1996 15 Apr[il][,][19]96 15 [19]96 apr[il] [15] 1996 apr[il] 1996 APR[IL] [15] 1996 [15] APR[IL] |
Можно указывать дату с полным именем месяца. Например, «апрель» или сокращение «Апр», заданное в текущем языке. Запятые не обязательны, регистр букв не учитывается. Некоторые рекомендации по применению алфавитных форматов даты:
Параметр сеанса SET DATEFORMAT не применяется, если месяц указывается в алфавитном формате. |
ISO 8601 |
Описание |
---|---|
ГГГГ-ММ-ДДТчч:мм:сс[.ммм] ГГГГММДДTчч:мм:сс[.ммм] |
Примеры:
Чтобы использовать формат ISO 8601, необходимо указать каждый элемент формата. Сюда также включаются символы T, двоеточие (:) и точка (.), показанные в формате. Квадратные скобки показывают, что доли секунд не являются обязательными. Временной компонент указан в 24-часовом формате. Символ «T» указывает на начало временной части значения типа datetime. Преимущество формата ISO 8601 заключается в том, что он является международным стандартом с однозначным представлением. Кроме того, на данный формат не влияют настройки SET DATEFORMAT и SET LANGUAGE. |
Без разделителей |
Описание |
---|---|
ГГГГММДД чч:мм:сс[.ммм] |
ODBC |
Описание |
---|---|
{ тс «1998-05-02 01:23:56.123» } { д «1990-10-02» } { т «13:33:41» } |
Интерфейс API ODBC определяет управляющие последовательности, представляющие значения даты и времени, называемые в ODBC временными метками. Этот формат временных меток ODBC также поддерживается языком определений OLE DB (DBGUID-SQL), поддерживаемым поставщиком Microsoft OLE DB для SQL Server. Приложения, использующие ADO, OLE DB или API-интерфейсы, основанные на ODBC, могут использовать этот формат временных меток ODBC для представления даты и времени. Управляющие последовательности временных меток ODBC имеют следующий формат: { literal_type 'constant_value' }:
|
Округление типа данных datetime до долей секунды
Значения типа datetime округляются в большую сторону до 0,000, 0,003 или 0,007 долей секунд как показано в таблице, представленной ниже.
Указанное пользователем значение |
Значение, хранимое системой |
---|---|
01/01/98 23:59:59.999 |
1998-01-02 00:00:00.000 |
01/01/98 23:59:59.995 01/01/98 23:59:59.996 01/01/98 23:59:59.997 01/01/98 23:59:59.998 |
1998-01-01 23:59:59.997 |
01/01/98 23:59:59.992 01/01/98 23:59:59.993 01/01/98 23:59:59.994 |
1998-01-01 23:59:59.993 |
01/01/98 23:59:59.990 01/01/98 23:59:59.991 |
1998-01-01 23:59:59.990 |
Соответствие стандартам ANSI и ISO 8601
datetime не удовлетворяет стандартам ANSI и ISO 8601.
Примеры
В следующем примере сравниваются результаты приведения строкового типа к каждому из типов данных 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 |