I was working on one of the financial projects on one of my own custom implementation for SQL Server. I found dates calculations to be extremely important which is needed by most of the applications which stand on today’s market, henceforth I thought of publishing an article on the dates topic. This will be needed for almost all financial applications that stands on today’s market and will be extremely important as it has wide range of applications in financial, Retails, etc. industries.
This article provides collection which will be extremely helpful for the programmers who are using SQL Server for their projects.
Extremely simple one and is mostly needed for beginners.
select GETDATE()
Gets the current date from SQL Server.
Output:
2013-07-27 14:45:44.463
The following will give start date of the current week. Assume Current Date is 27 th July 2013.
select DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0)
The output will be:
2013-07-22 00:00:00.000
select DATEADD(dd, 6-(DATEPART(dw, GETDATE())), GETDATE())
2013-07-26 14:51:36.1
This is assumed that beginning of the week is Monday and End is Friday, based on business day
This part is pretty tricky as present day can be between first or second half and also the month may contain 28,29,30,31 days.
We will divide the date for 1-15 being first half, as used by most financial institutions and then based on where date falls we compute the two weeks
The following code provides beginning and end dates for two weeks:
if MONTH(getdate()) <= 15
begin
select @beginDate = DATEADD(mm, DATEDIFF(mm,0,GETDATE()), 0)
select @endDate = DATEADD(mm, DATEDIFF(mm,0,GETDATE()), 14)
end
else
select @beginDate = DATEADD(mm, DATEDIFF(mm,0,GETDATE()), 15)
select @endDate = DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))
This will output 1-14 or 15-end of month as begin and end dates
Finding Start Date and End Date of the Current Month
This part is pretty straight forward.
The following query provides start and end date of current month:
Finding Start Date and End Date of the Current Quater
select @beginDate = DATEADD(q, DATEDIFF(q, 0, GETDATE()), 0)
select @endDate = DATEADD(d, -1, DATEADD(q, DATEDIFF(q, 0, GETDATE()) + 1, 0))
Considering the today date as 27th July 2013.
The begin date will be:
2013-07-01 00:00:00.000
The End date will be:
2013-09-30 00:00:00.000
Finding Start Date and End Date For Half Year
This is quite complicate part. We need to find date falls under first half or second half of the year and no direct methods available from sql server to do the same.
The following query provides start and end dates for half year:
select @beginDate = CAST(CAST(((((MONTH(GETDATE()) - 1) / 6) * 6) + 1) AS VARCHAR) + '-1-' + CAST(YEAR(GETDATE()) AS VARCHAR) AS DATETIME);
select @endDate = CAST(CAST(((((MONTH(GETDATE()) - 1) / 6) * 6) + 6) AS VARCHAR) + '-1-' + CAST(YEAR(GETDATE()) AS VARCHAR) AS DATETIME);
2013-12-01 00:00:00.000
Finding Start Date and End Date For Year
The following query finds start and end date for the current year:
select @beginDate = dateadd(d,-datepart(dy,getdate())+1,getdate())
select @endDate = dateadd(d,-datepart(d,getdate()),dateadd(m,13-datepart(m,getdate()),getdate()))
2013-01-01 15:15:47.097
2013-12-31 15:15:47.113
Richard Mueller edited Revision 1. Comment: Changed tags "2000", "2005",and "2008" to "SQL Server 2000", etc.
Naomi N edited Revision 2. Comment: Grammar