May 23, 2009

Find First and Last Day of the Current Quarter in SQL Server

I was recently working on a requirement where the user wanted a report with data from the First day to the Last Day of the current Quarter

Here's a simple way to find the Find First and Last Day of the current quarter in SQL Server 2005/2008


SELECT DATEADD(qq,DATEDIFF(qq,0,GETDATE()),0) as FirstDayOfQuarter


SELECT DATEADD(qq,DATEDIFF(qq,-1,GETDATE()),-1) as LastDayOfQuarter




OUTPUT


FirstDayOfQuarter         LastDayOfQuarter


2009-04-01 00:00:00.000   2009-06-30 00:00:00.000



About The Author

Suprotim Agarwal, ASP.NET Architecture MVP works as an Architect Consultant and provides consultancy on how to design and develop Web applications.

Suprotim is also the founder and primary contributor to DevCurry, DotNetCurry and SQLServerCurry. He has also written an EBook 51 Recipes using jQuery with ASP.NET Controls.

Follow him on twitter @suprotimagarwal

9 comments:

darksander said...

Thanks a lot for your gem :)

Serginho said...

Thank you very much, also it works for first day of the month, quarter and year.

It's really a gem.

Anonymous said...

Thats great - any ideas how to do this in the code of ssrs i.e. in c#?

Thanks :)

Anonymous said...

Thanks..its working..
But i didn't get d logic..

If possible plz Mention d logic

......MAster ANil

shalala said...
This comment has been removed by the author.
Anonymous said...

Thank you very much. Is there a easy way to get the first day and the last day of the previous quarter?

Suprotim Agarwal said...

To get the First Day and Last Day of 'Last' quarter, try this query

SELECT DATEADD(qq,DATEDIFF(qq,0,GETDATE())-1,0) as FirstDayOfLastQuarter

SELECT DATEADD(qq,DATEDIFF(qq,0,GETDATE()),-1) as LastDayOfLastQuarter

bill said...

beautiful code!

I needed first and last days of *last* quarter for my requirements, so I did:

SELECT DATEADD(qq,-1,DATEADD(qq,DATEDIFF(qq,0,GETDATE()),0))
SELECT DATEADD(qq,-1,DATEADD(qq,DATEDIFF(qq,-1,GETDATE()),-1))

bill said...

oops--sorry--didn't see your last comment where you already did the first and last day of last quarter!