Поделиться через


DATEDIFF (выражение служб SSIS)

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

Синтаксис

DATEDIFF(datepart, startdate, endate)

Аргументы

  • datepart
    Параметр, который указывает, какую часть даты сравнивать и для какой вернуть значение.

  • startdate
    Начальная дата периода.

  • endate
    Конечная дата периода.

Типы результата

DT_I4

Замечания

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

Часть даты

Сокращения

Год

yy, yyyy

Квартал

qq, q

Месяц

mm, m

День года

dy, y

День

dd, d

Неделя

wk, ww

День недели

dw, w

Час

Hh

Минута

mi, n

Секунда

ss, s

Миллисекунда

Ms

DATEDIFF возвращает NULL, если хотя бы один аргумент имеет значение NULL.

Литерал даты должен быть явно приведен к одному из типов данных для дат. Дополнительные сведения см. в разделе Типы данных служб Integration Services.

ПримечаниеПримечание

Проверка выражения завершается ошибкой при явном приведении литерала даты к одному из следующих типов данных: DT_DBTIMESTAMPOFFSET, DT_DBTIMESTAMP2 и DT_DBTIME2.

Произойдет ошибка при передаче недопустимой даты, а также в случае, если единица времени или даты не является строкой или если дата начала либо конца не является датой.

Если конечная дата является более ранней, чем начальная, то функция возвращает отрицательное число. Если начальные и конечные даты равны друг другу или находятся в одном интервале, то функция возвращает ноль.

Примеры

Этот пример вычисляет количество дней между двумя литералами даты. Если дата имеет формат «мм/дд/гггг», то эта функция возвращает 7.

DATEDIFF("dd", (DT_DBTIMESTAMP)"8/1/2003", (DT_DBTIMESTAMP)"8/8/2003")

Этот пример возвращает количество месяцев между литералом даты и текущей датой.

DATEDIFF("mm", (DT_DBTIMESTAMP)"8/1/2003",GETDATE())

Этот пример возвращает количество недель между датой в столбце ModifiedDate и переменной YearEndDate. Если YearEndDate имеет тип данных date, то явного приведения не требуется.

DATEDIFF("Week", ModifiedDate,@YearEndDate)