Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Какой тип имеет первый параметр функции DATEDIFF?  [new]
vvssvlad
Member

Откуда:
Сообщений: 2
При вызове функции DATEDIFF можно указать интервал времени:
... DATEDIFF(mm, @dtStart, @dtEnd) ...

Проблема:
---------
Как задать интервал в виде переменной? Что нибудь типа:

DECLARE @CustomInterval ...
SET @CustomInterval = mm
DATEDIFF(@CustomInterval, @dtStart, @dtEnd) ...

В ответ раздаются только ругательства SQL Server-а...

Заранее благодарен!
6 фев 03, 14:56    [123435]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип имеет первый параметр функции DATEDIFF?  [new]
Sinner
Member

Откуда:
Сообщений: 453
не знаю, но может быть решение в лоб

COOLDATEDIFF (@....) - функция твоя!!!
/*первый параметр - строка*/
begin
if @ = 'месяц' begin @res DATEDIFF (mm) end
if @ = 'год' begin @res DATEDIFF (mm) end
return @res
end


что-то типа этого ...
6 фев 03, 15:26    [123479]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип имеет первый параметр функции DATEDIFF?  [new]
jimmers
Member

Откуда: Санкт-Петербург - New York City
Сообщений: 5069
DECLARE @CustomInterval varchar(12), @dtEnd datetime, @dtStart datetime

SET @CustomInterval = 'Month'

SET @dtStart = '2001-01-21'
SET @dtEnd = '2002-07-12'

SELECT CASE @CustomInterval
WHEN 'Year' THEN DATEDIFF(Year, @dtStart, @dtEnd)
WHEN 'Month' THEN DATEDIFF(Month, @dtStart, @dtEnd)
...
END
6 фев 03, 15:42    [123508]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип имеет первый параметр функции DATEDIFF?  [new]
Гнездин Петр
Member

Откуда: Москва
Сообщений: 359
либо так:

DECLARE @CustomInterval varchar(12), @dtEnd datetime, @dtStart datetime, @retval int
SET @CustomInterval = 'Month'

SET @dtStart = '20010121'
SET @dtEnd = '20020712'

DECLARE @SQLString nvarchar(500)
SET @SQLString = N'SET @retval = DATEDIFF(' + @CustomInterval
+ N', ''' + CONVERT(nvarchar, @dtStart, 112)
+ N''', ''' + CONVERT(nvarchar, @dtEnd, 112) + N''')'
exec sp_executesql @SQLString, N'@retval int OUTPUT', @retval OUTPUT

PRINT @retval
6 фев 03, 16:58    [123646]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип имеет первый параметр функции DATEDIFF?  [new]
Gobzo Kobler
Member

Откуда: у людей такая фантазия?
Сообщений: 387
Никакой. Функции SQL - не настоящие функции, а скорее директивы препроцессора. Первый параметр типа не имеет, недаром он не описан в боле.
6 фев 03, 17:59    [123716]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип имеет первый параметр функции DATEDIFF?  [new]
vvssvlad
Member

Откуда:
Сообщений: 2
Спасибо всем за советы!
6 фев 03, 18:34    [123755]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить