SQLを使ったデータベース操作は非常に楽チンですが、データの抽出するSQL文を考えるのは難しいですよね。
今回はSQL Serverを使ったある期間内で任意の時間帯に該当するデータを抽出するSQL文をメモ。
ある期間内で任意の時間帯に該当するデータを抽出したい!
例えば、4/26~4/29の期間で10:00~10:30のデータを抽出したいとします。↓の赤字が該当データとなります。
時間 |回数
---------------------------------------------
2012/04/26 10:00:00|0
2012/04/26 10:20:00|1
2012/04/27 09:00:00|0
2012/04/28 10:00:00|1
2012/04/28 10:10:00|2
2012/04/28 10:20:00|0
2012/04/29 10:40:00|3
2012/04/29 11:30:00|1
この場合はwhere句は
- convert関数を使って、時間カラムを時分秒に変換
- betweenを使って時間帯を指定
SQL文
select * from [hogehoge]
where convert(varchar(20),[時間], 108) between '10:00:00' and '10:30:00'
注意点
この方法はSQL Server用ですので、OracleやMySQLなどでは使えないはずです。考え方は同じですので、使っているデータベースにあわせてSQL文を変更してください。