oracle按小时查询显示数据
推荐于2016-07-28 · 知道合伙人软件行家
可以使用to_char()、concat()()等函数实现查询前一小时、前一天、前一个月或者前一年的数据。
1、查询一小时
1)to_char(sysdate,'yyyy-mm-dd ')将系统当前时间转换为字符类型,仅取出年月日
2)|| 字符串连接符
3)to_char(sysdate,'hh24')-1取出系统当前时间的小时部分,hh24小时是24进制的
4)concat是字符串连接函数
select concat(to_char(sysdate,'yyyy-mm-dd ')||(to_char(sysdate,'hh24')-1),':00:00') start_time,concat(to_char(sysdate,'yyyy-mm-dd hh24'),':00:00') end_time from dual
2、查询前一天
1)to_char(sysdate,'yyyy-mm-dd ')将系统当前时间转换为字符类型,仅取出年月日
2)|| 字符串连接符
select to_char(sysdate-1,'yyyy-mm-dd ')||'00:00:00' start_time,to_char(sysdate-1,'yyyy-mm-dd ')||'23:59:59' end_time from dual
3、查询前一个月
1)to_char(sysdate,'yyyy-mm-dd ')将系统当前时间转换为字符类型,仅取出年月日
2)|| 字符串连接符
3)add_months(sysdate,-1)取出系统当前时间月部分,然后-1
4)concat是字符串连接函数
select concat(to_char(sysdate,'yyyy')||to_char(add_months(sysdate,-1), '-MM-'),'01 00:00:00')start_time,
concat(to_char(sysdate,'yyyy')||to_char(add_months(sysdate,-1), '-MM-')||to_char(LAST_DAY(sysdate),'dd '),'23:59:59') end_time from dual
4、查询前一年
1) extract(year from sysdate) 从系统日期从取出年部分
2)|| 字符串连接符
3)to_char(LAST_DAY(sysdate),'dd ')取出系统日期中的最后一天
4)concat是字符串连接函数
select extract(year from sysdate)-1||'-01-01 00:00:00' start_time,concat(extract(year from sysdate)-1||'-12-'||to_char(LAST_DAY(sysdate),'dd '),'23:59:59') end_time from dual
2024-08-23 广告
from table
where 时间 between to_date('2013-4-18 11:06','YYYY-MM-DD HH24:MI:SS')
and to_date('2013-4-18 12:06','YYYY-MM-DD HH24:MI:SS')
我不是只查这一个时间段的哦·····我是要选择个时间段,时间段是以天计的,在这一天内哪些小时有数据让他就统计下,应该会用到group by的,也就是比如说今天1点有5条数据 2点有4条数据 3点有6条数据 。。。。。依次类推
select trunc(时间,'HH24') 时段,count(*)
from table
where trunc(时间)=to_date(2011-3-15','YYYY-MM-DD')
group by trunc(时间,'HH24')
;
trunc函数可以截到你想要的任何时段需求