Для определения величины временного промежутка от первого заданного значения типа дата, время или дата/время до второго может использоваться функция DATEDIFF. Данная функция возвращает значение типа BIGINT и имеет следующий формат:
DATEDIFF ( <временной_отрезок> FROM <значение1> FOR <значение2> )
или
DATEDIFF ( <временной_отрезок>, <значение1>, <значение2> ), где <временной_отрезок> имеет тот же синтаксис, что и в функции DATEADD.
Следует отметить следующее:
- функция возвращает положительное число, если <значение2> превышает <значение1>, отрицательное - если <значение1> превышает <значение2>, и ноль - если значения равны;
- если результат вычисления дробный, то выводится округленное значение;
- сравнение значения типа DATE со значением типа TIME недопустимо;
- как и для функции DATEADD, определенные временные отрезки могут использоваться только с соответствующим им типом.
Например, требуется для заявок, поданных абонентом с лицевым счетом '115705', вывести количество недель, прошедших с даты регистрации заявки до момента ее выполнения. Для этого можно использовать следующий запрос: SELECT RequestCD, DATEDIFF (WEEKDAY FROM IncomingDate
FOR ExecutionDate) AS Interval FROM Request WHERE AccountCD = '115705';. Результат выполнения запроса представлен на рис. 3.32.
|
REQUESTCD |
INTERVAL |
|
2 |
0 |
|
15 |
0 |
|
16 |
<null> |
|
17 |
3 |
|
18 |
1 |
Рис. 3.32. Результат работы функции DATEDIFF
предыдущаяследующая