Creating a dynamic date range in SQL

date, date-range, sql, sql-server

Solution

You could just add another DATEADD() to your current script:

SELECT DATEADD(month,6,DATEADD(yy, DATEDIFF(yy,1,GETDATE())-1,0)) AS StartDate
      ,DATEADD(month,6,DATEADD(dd,-1,DATEADD(yy, DATEDIFF(yy,0,GETDATE()),0))) AS EndDate

Problem

How can I construct a SQL statement that will always return a start date of July 1 of the previous year, and an end date of June 30 of the current year based on GETDATE()? Right now I have ``` Dateadd(yy, Datediff(yy,1,GETDATE())-1,0) AS StartDate, DateAdd(dd,-1,Dateadd(yy, Datediff(yy,0,GETDATE()),0)) AS EndDate ``` which will return January 1, 2012 and December 31, 2013 respectively..

Original source