среда, 18 мая 2011 г.

Опеределение сколько дней в месяце и получение последнего дня в месяца в T-SQL

При разработке отчёта встала задача определения сколько дней в указанном месяце в указанный год (не забываем, что есть висакосные года, когда в феврале 29 дней). Долго чесать репу не пришлось и всё-таки решение на T-SQL достаточно простое. Ниже текст скалярной функции, которая вычисляет последний день указанного месяца, точнее по указанной дате возвращает дату конечного дня... в общем как-то так :)
---------------------------------------------------------------------------
CREATE FUNCTION GET_LASTDAY_MONTH
(
@DATE DATE
)
RETURNS DATE
AS
BEGIN
DECLARE @RESULT DATE
DECLARE @DAY_OF_MONTH TINYINT
DECLARE @TEMP_RESULT DATE
SET @DAY_OF_MONTH = DAY(DATEADD(MONTH, 1, CAST(@DATE AS DATETIME)) - DAY (DATEADD(MONTH, 1, @DATE)))
SET @TEMP_RESULT = DATEADD(DAY, (@DAY_OF_MONTH - DAY(@DATE)), @DATE)
SET @RESULT = @TEMP_RESULT
RETURN @RESULT

END
------------------------------------------------------------------------------------------
В всё просто :)