Anatoly Lubarsky Logo
MSSQL, .NET, Design. Life and Music

T-SQL: Date Ranges

A while ago I pointed out how to solve a problem working with dates in T-SQL vs. SQLCLR solution (The last day of the month). I just wanted to help Ayende to find out an easy set-based solution and to show some disadvantages of "over-using" of SQLCLR when SQL problem could actually be solved without .NET Framework transitions overhead.


I have to admit that Ayende's posts are usually interesting, controversial and challenging. Today he posted another interesting issue - SQL date ranges:


"For instance, how do you find out how many hours each employee worked per day over the last month ?"


Let's see. First of all when we talk about data ranges one can definitely find high performance sql-based solution just because of the fact that MSSQL clustered index is the most optimized kind of solution for this kind of problems. When you fully undestand the above from ideological perspective it will be easier to find out how to do it. Let's assume that each employee writes down his start and end time each day. Raw query should go something like this:


SELECT AVG(DATEDIFF(hh, StartDateTime, EndDateTime)) AS HoursPerDay
  FROM EmpHours
 WHERE DATEPART(mm, StartDate) = DATEPART(mm, GETDATE()) - 1
 GROUP BY EmpId

Enjoy :)


Related Posts:

Thursday, February 16, 2006 9:22 PM

Comments

# Using Data Ranges
Using Data Ranges

1/13/2007 11:28 PM by Ayende @ Blog

Login

Fosimo
Get Fosimo on CNET Download.com!
Fosimo.TR
Get Fosimo.TR from CNET Download.com!
Subscribe via RSS

Article Categories

.Net Framework
ASP.NET Tips
C# Win32 API
HTML, CSS, Web
Javascript Tips
MSSQL Tips
System
System.Net
WebServices

Archives

(02) March, 2010
(01) January, 2010
(02) December, 2009
(03) September, 2009
(03) August, 2009
(09) July, 2009
(04) June, 2009
(04) May, 2009
(02) April, 2009
(05) March, 2009
(03) February, 2009
(03) January, 2009
(06) December, 2008
(04) November, 2008
(06) October, 2008
(07) September, 2008
(09) August, 2008
(05) July, 2008
(05) June, 2008
(07) May, 2008
(06) April, 2008
(03) March, 2008
(02) February, 2008
(04) January, 2008
(03) December, 2007
(05) November, 2007
(06) October, 2007
(07) September, 2007
(13) August, 2007
(11) July, 2007
(14) June, 2007
(16) May, 2007
(14) April, 2007
(10) March, 2007
(17) February, 2007
(21) January, 2007
(17) December, 2006
(14) November, 2006
(13) October, 2006
(13) September, 2006
(14) August, 2006
(12) July, 2006
(11) June, 2006
(12) May, 2006
(22) April, 2006
(36) March, 2006
(14) February, 2006
(14) January, 2006
(20) December, 2005
(17) November, 2005
(17) October, 2005
(17) September, 2005
(14) August, 2005
(18) July, 2005
(12) June, 2005
(17) May, 2005
(13) April, 2005
(22) March, 2005
(12) February, 2005
(14) January, 2005
(19) December, 2004
(15) November, 2004
(13) October, 2004
(16) September, 2004
(12) August, 2004
(29) July, 2004
(25) June, 2004
(33) May, 2004
(26) April, 2004
(18) March, 2004
(11) February, 2004
(07) January, 2004
(03) December, 2003
(02) November, 2003

Post Categories

.Net and C#
Antispam
App. Development
Architecture
ASP.NET
Blogging
del.icio.us
Fosimo
Fun
Google
Javascript
Misc.
MSSQL
Music
Performance
Roller
Social Networks
Tools
Visual Studio
Web 2.0
WebServices
Yahoo

About Me

linkedin Profile
Recs
Recs Books
Who am I

My Sites

onecone
x2line blogs