Oracle-select语句,在指定时间内查询

Oracle-select语句,在指定时间内查询

浮生未歇 发布于 2017-10-19 字数 356 浏览 1067 回复 1

select 语句,怎么只统计时间不统计日期?(oracle数据库下)
就是一个数据库表,有时间、温度等列,时间列是带有年月日和时分秒的格式,我想统计一下白天的平均温度和夜间的平均温度,但是又不能直接用大于小于号,因为时间列还带有日期,比如,如果大于20091203080000(09年12月3号8点)算是白天,那09年12月2号以前的白天就统计不上,
请问这个该怎么统计出来呢?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜柠檬 2017-10-26 1 楼

假如说白天的时间段为0点至下午5:59:59,则可以这样写。
统计白天的:to_char(datetime,'hhmiss') between '000000' and '175959';
统计晚上的:to_char(datetime,'hhmiss') between '180000' and '23:59:59';
时间要是24小时制的,对于某个特殊的时间点可以加上OR。

根据你给的SQL,startimen和endtime两个字段应该是字符串类型的,所以不需要转换,完整的SQL如下:

SELECT AVG(temprature),AVG(wind) 
FROM device 
WHERE targetNo = '34' 
AND startimen<'20120305100201' AND endtime>'20120315100201' 
AND substr(startimen,9,6) BETWEEN '000000' AND '175959'
AND substr(endtime,9,6) BETWEEN '000000' AND '175959';