Solved

SQL Date Range Syntax Assistance

Posted on 2016-08-19
3
48 Views
Last Modified: 2016-08-22
I have the need to calculate a 'season to date' date range and add it to my query below. Our season runs as follows January thru Jun and July thru December so if the current month is August my output should be 07/01/2016 AS STDStartDate and 12/31/2016 AS STDEndDate

SELECT  DATEADD(wk, 0,
                DATEADD(DAY, 1 - DATEPART(WEEKDAY, GETDATE()),
                        DATEDIFF(dd, 0, GETDATE()))) AS WkStartDate ,
        DATEADD(wk, 1,
                DATEADD(DAY, 0 - DATEPART(WEEKDAY, GETDATE()),
                        DATEDIFF(dd, 0, GETDATE()))) AS WkEndDate ,
        DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) AS MthStartDate ,
        DATEADD(dd, -1, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) + 1, 0)) AS MthEndDate ,
        DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS YearStartDate ,
        DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS YearEndDate;

Open in new window

0
Comment
Question by:mburk1968
3 Comments
 
LVL 65

Expert Comment

by:Jim Horn
ID: 41762632
Sounds like a candidate for building your own SQL Server Calendar Table, where you can add logic for custom seasons like Fiscal Years here.  

That way instead of having to code a big honkin' expression every time you want to query season-to-date, just code it once when you build the table in order to populate season-specific columns.  Then you can do a simple JOIN in query expressions.
0
 
LVL 40

Accepted Solution

by:
Sharath earned 500 total points
ID: 41763863
May be something like this. try this.
SELECT  DATEADD(wk, 0,
                DATEADD(DAY, 1 - DATEPART(WEEKDAY, GETDATE()),
                        DATEDIFF(dd, 0, GETDATE()))) AS WkStartDate ,
        DATEADD(wk, 1,
                DATEADD(DAY, 0 - DATEPART(WEEKDAY, GETDATE()),
                        DATEDIFF(dd, 0, GETDATE()))) AS WkEndDate ,
        DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) AS MthStartDate ,
        DATEADD(dd, -1, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) + 1, 0)) AS MthEndDate ,
        DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS YearStartDate ,
        DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS YearEndDate,
        CASE WHEN REPLACE(CONVERT(VARCHAR(5),GETDATE(),1),'/','') <= '0630' THEN '0101' ELSE '0701' END AS STDStartDate,
        CASE WHEN REPLACE(CONVERT(VARCHAR(5),GETDATE(),1),'/','') <= '0630' THEN '0630' ELSE '1231' END AS STDEndDate;

Open in new window

0
 

Author Closing Comment

by:mburk1968
ID: 41765447
Thank you
0

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

After restoring a Microsoft SQL Server database (.bak) from backup or attaching .mdf file, you may run into "Error '15023' User or role already exists in the current database" when you use the "User Mapping" SQL Management Studio functionality to al…
In this article I will describe the Copy Database Wizard method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

856 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question