2016-01-15 4 views
0

Как получить последнюю дату определенного месяца с ID месяца и года в SQL?Как получить последнюю дату определенного месяца с идентификатора месяца и года в SQL?

Входы:

@MonthID INT = 2, 
@Year INT = 2015 

Требуемая мощность: 28/02/2015

+2

Какая ** версия ** SQL Server? Что касается SQL Server ** 2012 **, для этой цели существует функция ['EOMONTH'] (https://msdn.microsoft.com/en-us/library/hh213020.aspx). –

+0

Да, ее SQL Server 2012. Получил ответ. Спасибо. – Mia

ответ

1

Это просто в SQL Server 2012+

В кадр дату от года и месяца использования DATEFROMPARTS (Transact-SQL)

Чтобы найти последний день использования месяца EOMONTH (Transact-SQL)

Declare @MonthID INT = 2, 
     @Year INT = 2015 

SELECT Eomonth(Datefromparts(@Year, @MonthID, 1)) 

Для любой вещи менее Sql server 2012

SELECT Dateadd(dd, -1, Dateadd(mm, 1, Cast(Cast(@Year AS CHAR(4)) + '-' 
         + Cast(@MonthID AS VARCHAR(2))+'-'+'1' AS DATE))) 

Примечание: Если переменные имеют Varchar типа, то вы можете удалить cast к VARCHAR

1

Вы можете найти последний день месяца следующим образом:

Declare @MonthID varchar(10) = '02', @Year varchar(10) = '2015' 
select dateadd(dd,-1,dateadd(MM,1,cast(@Year+'-'[email protected]+'-1' as date))) 
0

Вот как я это сделал.

DECLARE @MonthID INT = 3, 
@Year INT = 2015 

DECLARE @InputDate DATE, @TempDate DATE, @OutputDate DATE 

SET @InputDate = CAST(CAST(@Year AS VARCHAR) + '-' + CAST(@MonthID AS varchar) + '-01' AS DATE) 
SET @TempDate = @InputDate 

WHILE (DATEPART(m, @InputDate) = DATEPART(m, @TempDate)) 
BEGIN 
    SET @OutputDate = @TempDate 
    SET @TempDate = DATEADD(d,1,@TempDate) 
END 

SELECT @OutputDate 
Смежные вопросы