Узнать количество дней в месяце в t-SQL можно таким образом:
declare @date datetime = getdate() declare @dayCount int set @dayCount = day(dateadd(dd, -day(dateadd(mm, 1, @date)), dateadd(mm, 1, @date))) select @dayCount
В этом коде количество дней в месяце определяется функцией day от последнего числа месяца. Последнее число месяца в моем случае находится добавлением к текущей дате одного месяца и “вычитанием” от неё дня месяца полученной даты. Начиная с MS SQL 2012ой версии, последнее число можно найти с использованием встроенной функции EOMonth. Т.е. необходимо третью строку в коде выше заменить следующей строкой:
set @dayCount = day(eomonth(@date))
В итоге наша функция будет выглядеть так:
create function [dbo].[monthDayCount] (@date datetime) returns int as begin return (day(dateadd(dd, -day(dateadd(mm, 1, @date)), dateadd(mm, 1, @date)))) end