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

Откуда:
Сообщений: 4
Добрый день всем!
Подскажите пожалуйста: есть ли в SQL функция аналогичная DATEDIFF, но работающая по календарю 360 дней, т.е. возвращающая количество дней между двумя датами на основе 360-дневного года (двенадцать 30-дневных месяцев)?
Аналог в Excel - функция "ДНЕЙ360".
Спасибо!
9 июн 09, 13:35    [7280641]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли такая функция?  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 901
А можно оффтоп, а вы с какой планеты?
9 июн 09, 14:51    [7281226]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли такая функция?  [new]
П-Л
Guest
--------------------------------------------------------------------------------
CREATE FUNCTION dbo.CalcDaysNumber(
    @dtFrom DATETIME, @dtTo DATETIME, @iDaysCode INT) 
RETURNS INT
AS BEGIN

    RETURN CAST(
        CASE 
            WHEN (@dtTo Is NULL) OR (@dtFrom Is NULL) THEN NULL
            WHEN @iDaysCode=1 THEN CAST(@dtTo as INT) - CAST(@dtFrom as INT)
            WHEN @iDaysCode=2 THEN CAST(@dtTo as INT) - CAST(@dtFrom as INT)
            WHEN @iDaysCode=3 THEN 
                CASE 
                    WHEN 30 - DAY(@dtFrom)>0 
                    THEN 30 - DAY(@dtFrom)
                    ELSE 0 
                END 
                - CASE 
                    WHEN 30 - DAY(@dtTo) > 0
                    THEN 30 - DAY(@dtTo) 
                    ELSE 0
                END
                + 30 * (MONTH(@dtTo)-MONTH(@dtFrom))
                + 360 * (YEAR(@dtTo)-YEAR(@dtFrom))
            WHEN @iDaysCode=6 THEN CAST(@dtTo as INT) - CAST(@dtFrom as INT)
            ELSE CAST(@dtTo as INT) - CAST(@dtFrom as INT)
        END 
    AS INT)

END
--------------------------------------------------------------------------------
9 июн 09, 14:58    [7281271]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли такая функция?  [new]
rodion999
Member

Откуда:
Сообщений: 4
П-Л,

Спасибо!
9 июн 09, 16:04    [7281793]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить