Как получить последнюю дату определенного месяца с ID месяца и года в SQL?Как получить последнюю дату определенного месяца с идентификатора месяца и года в SQL?
Входы:
@MonthID INT = 2,
@Year INT = 2015
Требуемая мощность: 28/02/2015
Как получить последнюю дату определенного месяца с ID месяца и года в SQL?Как получить последнюю дату определенного месяца с идентификатора месяца и года в SQL?
Входы:
@MonthID INT = 2,
@Year INT = 2015
Требуемая мощность: 28/02/2015
Это просто в 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
Вы можете найти последний день месяца следующим образом:
Declare @MonthID varchar(10) = '02', @Year varchar(10) = '2015'
select dateadd(dd,-1,dateadd(MM,1,cast(@Year+'-'[email protected]+'-1' as date)))
Вот как я это сделал.
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
Какая ** версия ** SQL Server? Что касается SQL Server ** 2012 **, для этой цели существует функция ['EOMONTH'] (https://msdn.microsoft.com/en-us/library/hh213020.aspx). –
Да, ее SQL Server 2012. Получил ответ. Спасибо. – Mia