У меня есть 2 переменные года и квартала, которые я получаю из представления. Я должен передать эти значения, чтобы получить дату последнего квартала и года. Есть ли способ сделать это в SQL?
Например:
select (QuarterEndDate) where Year = @year and Quarter = @quarter
Я бы использовал datefromparts() и eomonth():
datefromparts()
eomonth()
select eomonth(datefromparts(@year, 3 * @quarter, 1))
Демонстрация на DB Fiddlde :
declare @year int; declare @quarter int; set @year = 2020; set @quarter = 3; select eomonth(datefromparts(@year, 3 * @quarter, 1)) last_quarter_day GO
| last_quarter_day | | :--------------- | | 2020-09-30 |
Попробуйте следующее, должна указать последнюю дату квартала.
первый вариант: qq - номер вашего квартала.
qq
dateadd(qq, DateDiff(qq, 0, @Date), -1)
второй вариант:
dateadd(D,-1,dateadd(M, 3*qq+3, CONVERT(date, CONVERT(varchar(5),@year)+'-1-1')))