问题描述
- 把一天分成四个时间段,分别查询这四个时间段的数据
-
0900-1200
1200-1600
1600-2100
2100-0900
这四个时间段
意思就是相当于一天的开始是9点,然后最后的时间段是晚上9点到第二天早上9点
,查询的数据都是9点到第二天9点的数据,求大神给点思路
解决方案
LINQ么?
var query = db.GroupBy(x.时间字段.Hour);
第一个时段 = query.Where(x => new int[] {9,10,11}.Contains(x.Key)).SelectMany(x => x);
其余类似
解决方案二:
如果是用SQL,这个方法或许可行,我用oracle的SQL做示例,假定你的日期字段是 rq:
select rq
,sd
,其它计算字段(如果这些字段用汇总函数)
from (
select to_char(rq,''yyyy-mm-dd) rq
,case when to_char(rq,'hh24') between '09' AND '12' THEN '0900-1200'
when to_char(rq,'hh24') between '12' AND '16' THEN '1200-1600'
when to_char(rq,'hh24') between '16' AND '21' THEN '1600-2100'
else '2100-0900'
end sd
,其它字段
from 数据表
where 条件筛选处理
)
group by rq,sd
如果只想用时段区分,可以将日期屏蔽了