CalendarQuarterDateRange

 CREATE PROCEDURE [dbo].[CalendarQuarterDateRange]

AS
begin
declare 
  @today date
, @todayquarter int
, @reportyear int
, @reportquarter int
, @quarterbegindate datetime
, @quarterenddate datetime;

set @today = getdate();
set @todayquarter = datepart(quarter, @today);

--
-- figure out the reportyear and reportquarter
--
if @todayquarter = 1
begin
set @reportyear = datepart(year, @today) - 1;
set @reportquarter = 4;
end
else 
begin
set @reportyear = datepart(year, @today);
set @reportquarter = @todayquarter - 1;
end

--
-- figure out the begin and end date for the reportquarter
--
if @reportquarter = 1
begin
set @quarterbegindate = datefromparts(@reportyear, 1, 1);
set @quarterenddate = datefromparts(@reportyear, 3, 31);
end
else if @reportquarter = 2
begin
set @quarterbegindate = datefromparts(@reportyear, 4, 1);
set @quarterenddate = datefromparts(@reportyear, 6, 30);
end
else if @reportquarter = 3
begin
set @quarterbegindate = datefromparts(@reportyear, 7, 1);
set @quarterenddate = datefromparts(@reportyear, 9, 30);
end
else if @reportquarter = 4
begin
set @quarterbegindate = datefromparts(@reportyear, 10, 1);
set @quarterenddate = datefromparts(@reportyear, 12, 31);
end

select 
  @quarterbegindate quarterbegindate
, @quarterenddate quarterenddate;

end

Comments

Popular posts from this blog

Using sp_executesql with OPENQUERY

Executing Remote Queries Safely and Efficiently with sp_executesql