DATEDIFF (Transact-SQL)

Возвращает количество границ даты и времени, пересекаемых между двумя указанными датами.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

DATEDIFF ( datepart , startdate , enddate )

Аргументы

  • datepart
    Указывает, по какой части даты вычислять разницу. В таблице ниже перечислены части дат и сокращения, распознаваемые SQL Server 2005. Эти части дат и аббревиатуры нельзя указывать как объявляемую пользователем переменную.

    Часть даты Сокращения

    year

    yy, yyyy

    quarter

    qq, q

    month

    mm, m

    dayofyear

    dy, y

    day

    dd, d

    week

    wk, ww

    Hour

    hh

    minute

    mi, n

    second

    ss, s

    millisecond

    ms

  • startdate -
    Начальная дата. Аргумент startdate — это выражение, которое возвращает значение типа datetime или типа smalldatetime либо символьную строку в формате даты.

    Так как значение типа smalldatetime имеет точность до минуты, то при использовании значения типа smalldatetime секунды и миллисекунды всегда равны 0.

    Если указаны только две последние цифры года, значения, меньшие или равные двум последним цифрам значения параметра конфигурации two-digit year cutoff, принадлежат тому же веку, что и отсекаемый год. Значения, которые больше двух последних цифр значения этого параметра, принадлежат предыдущему по отношению к отсекаемому году веку. Например, если значение параметра two-digit year cutoff равно 2049 (по умолчанию), то 49 интерпретируется как 2049, а 2050 интерпретируется как 1950. Чтобы избежать недоразумений, указывайте год четырьмя цифрами.

    Дополнительные сведения о настройке различных значений времени см. в разделе Форматы времени. Дополнительные сведения о настройке дат см. в разделе Дата и время (Transact-SQL).

  • enddate
    Конечная дата. Аргумент enddate — это выражение, которое возвращает значение типа datetime или типа smalldatetime либо символьную строку в формате даты.

Типы возвращаемых данных

integer

Замечания

Дата startdate вычитается из даты enddate. Если startdate — более поздняя дата, чем enddate, то возвращается отрицательное значение.

Функция DATEDIFF возвращает ошибку, если результат находится вне диапазона целых значений. Для миллисекунд максимальное число равно 24 дням, 20 часам, 31 минуте и 23,647 секундам. Для секунд максимально число равно 68 годам.

Способ подсчета пересекаемых границ, например в минутах, секундах и миллисекундах, делает результаты, возвращаемые функцией DATEDIFF, одинаковыми для любых типов данных. Результатом является целое значение со знаком, равное количеству границ datepart, пересеченных между первой и второй датами. Например, число недель между воскресеньем, 4 января, и воскресеньем, 11 января, равно 1.

Примеры

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

USE AdventureWorks;
GO
SELECT DATEDIFF(day, OrderDate, GETDATE()) AS NumberOfDays
FROM Sales.SalesOrderHeader;
GO

См. также

Справочник

Функции CAST и CONVERT (Transact-SQL)
Типы данных (Transact-SQL)
Функции даты и времени (Transact-SQL)

Другие ресурсы

Формат ISO 8601
Алфавитный формат даты
Числовой формат дат
Формат ODBC Datetime
Форматы времени
Строковый формат без разделителей

Справка и поддержка

Получение помощи по SQL Server 2005