Pytanie : TSQL Skalar Funkcja using wybiórka wśrodku the funkcja & excluding data

I przepraszać w postęp dla funkcja być prawdopodobny podstawowy pytanie, problem być że I być nowy SQL i szykana z the syntax.

I am ten funkcja:

Alter funkcja dbo. Fn_get_last_day
(@FN_InputDt datetime

Returns @d
as
begin

declare @d datetime
ustalony @d = @FN_InputDt

select @d =
skrzynka gdy @FN_InputDt = (0) wtedy (0) else
wybrany dzień (@Fn_InputDt) DatePart (D, @FN_InputDt)
end

Return

End

Here być the błąd wracać:
Msg 156, Poziom 15, Stan (1), Procedura FN_GET_LAST_DAY, kreskowy 16
incorrect składnia blisko the słowo kluczowe "wybiórka".
Msg 102, Poziom 15, Stan (1), Procedura FN_GET_LAST_DAY, kreskowy 16
Incorrrect składnia blisko 'D'< br/>Msg 102, Poziom 15, Stan (1), Procedura FN_GET_LAST_DAY, kreskowy 21
Incorrect składnia blisko 'END'< br/>

Odpowiedź : TSQL Skalar Funkcja using wybiórka wśrodku the funkcja & excluding data

Teraz I widzieć co ty być póżniej.

zmieniać funkcja dbo. Fn_get_last_day (@FN_InputDt datetime)
wracać int

zaczynać
wracać skrzynka gdy @FN_InputDt=0 wtedy (0) inny dzień (dateadd (m, 1+datediff (m, (0), @FN_InputDt), (0)) - (1)) końcówka
końcówka

X = datediff (m, (0), @FN_InputDt) -- kalkulować ile miesiąc upływać od "wirtualny data (0)"
Y = dateadd (m, 1+X, (0)) -- dodawać 1+X miesiąc the "wirtualny data (0)", więc my być w the przyszły miesiąc (X+1)
Notatka: the efekt uboczny być że ono także ustawiać the dzień-w-miesiąc także dzień miesiąc
Z = Y-1  -- brać jeden dzień wolny, więc my być z powrotem w ten miesiąc, przy the ostatni dzień
Dzień (Z)   --- dostawać the dzień miesiąc
Inne rozwiązania  
 
programming4us programming4us