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
Форматы времени
Строковый формат без разделителей