2009-09-03 5 views
1

주어진 날짜 범위와 시간 프레임에 생성 된 행 수를 가져 오는 쿼리를 작성하고 싶습니다. 다른 말로. 날짜 범위는 주어진 월에 대한 것이지만 그 달 동안 매일 특정 시간 (예 : 08:00 - 17:00) 동안 작성된 행만 필요합니다.MS SQL에서 주어진 날짜 범위에 대해 "일일"결과를 어떻게 쿼리합니까?

쉽게 가능합니까?

나는 매일 하위 쿼리를 생각했지만 더 쉬운 방법이 있는지 몰랐다.

답변

0

이렇게하면 원하는 것을 얻을 수 있다고 생각합니다. 저장 프로 시저 또는 함수를 만들어서 시작/끝 날짜와 시작/끝 시간 (현재 고정되어 있음)을 전달할 수 있습니다. 종료일보다 엄격하게 작음을 유의하십시오. '8/31/2009 11:59:59'이하도 사용할 수 있습니다.

select count(*), 
     datepart(year,created) as [year], 
     datepart(month,created) as [month], 
     datepart(day,created) as [day] 
from table 
where created >= '8/1/2009' 
     and created < '9/1/2009' 
     and datepart(hour,created) >= 8 
     and datepart(hour,created) <= 17 
group by datepart(year,created), datepart(month,created), datepart(day,created) 
+0

답장을 보내 주셔서 감사합니다. – jktravis

0

관심있는 시간 동안 테스트 할 DATEPART() 함수를 사용하여 예를 들어

:.

select 1, 
    datepart(hour,getDate()) 
where datepart(hour,getDate()) >= 8 and datepart(hour,getDate()) < 17 
0

이이 시간의 범위를하는 것처럼 뭔가를 할 수 있습니다 (오후 12시 -1 분) 및 일 (오늘 ~ 10 일 전) :

select * from table where DateColumn < GetDate() and DateColumn > (GetDate() - 11) and DatePart(hh, DateColumn) >= 12 and DatePart(hh, DateColumn) <= 13 
0

왜 이렇게하지 않으십니까?

... WHERE MONTH(TheDateColum) = @Month AND HOUR(TheDateColum) >= 8 AND HOUR(TheDateColumn) <= 17 

흠 ... 그들은 저를 때렸습니다.

관련 문제