2009-09-03 7 views
1

与えられた日付範囲と時間枠で作成された行数を取得するクエリを作成したいと考えています。言い換えると。日付範囲は指定された月のものになりますが、その月中の各日の特定の時間(たとえば08:00 - 17:00)に作成された行のみが必要です。MS SQLの特定の日付範囲で "1日あたり"の結果をクエリするにはどうすればよいですか?

これは簡単に可能ですか?

私は毎日サブクエリを考えていましたが、簡単な方法があるかどうかはわかりませんでした。

答えて

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

はこのような何かを行うことができ、これは時間の範囲のためにそれをしません( (今日〜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 

hm ...彼らは私にそれを打つ。

関連する問題