2 smeevil Smeevil 于 2016.05.03 22:57 提问

把一天分成四个时间段,分别查询这四个时间段的数据

0900-1200
1200-1600
1600-2100
2100-0900
这四个时间段
意思就是相当于一天的开始是9点,然后最后的时间段是晚上9点到第二天早上9点
,查询的数据都是9点到第二天9点的数据,求大神给点思路

2个回答

caozhy
caozhy   Ds   Rxr 2016.05.03 23:24
已采纳

LINQ么?
var query = db.GroupBy(x.时间字段.Hour);
第一个时段 = query.Where(x => new int[] {9,10,11}.Contains(x.Key)).SelectMany(x => x);
其余类似

caozhy
caozhy 回复Smeevil: 时间-9小时再group by
一年多之前 回复
Smeevil
Smeevil 我现在能查到这四个时间段,但我现在想要从早上9点到第二天早上9点的,这个我不知道怎么弄
一年多之前 回复
ShanYeRen2016
ShanYeRen2016   2016.05.06 11:18

如果是用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

 如果只想用时段区分,可以将日期屏蔽了
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!