Чтобы получить нет. дней в месяце мы можем напрямую использовать Day (), доступный в SQL.
Перейдите по ссылке, размещенной в конце моего ответа на SQL Server 2005/2008.
Следующий пример и результат взяты из SQL 2012
alter function dbo.[daysinm]
(
@dates nvarchar(12)
)
returns int
as
begin
Declare @dates2 nvarchar(12)
Declare @days int
begin
select @dates2 = (select DAY(EOMONTH(convert(datetime,@dates,103))))
set @days = convert(int,@dates2)
end
return @days
end
--select dbo.daysinm('08/12/2016')
Результат в SQL Server SSMS
(no column name)
1 31
Процесс:
Когда используется EOMONTH, какой бы формат даты мы ни использовали, он конвертируется в формат DateTime SQL-сервера. Тогда дата выхода EOMONTH () будет 2016-12-31, где 2016 год - год, 12 - месяц, а 31 - дни.
Этот результат при передаче в Day () дает общее количество дней в месяце.
Если мы хотим получить мгновенный результат проверки, мы можем напрямую запустить приведенный ниже код,
select DAY(EOMONTH(convert(datetime,'08/12/2016',103)))
или
select DAY(EOMONTH(convert(datetime,getdate(),103)))
для работы в SQL Server 2005/2008/2012, перейдите по следующей внешней ссылке ...
Найти количество дней в месяце в SQL