oracle按小时查询显示数据

按小时查询,比如说2013-4-1811:06到2013-4-1812:06有多少条数据,是按小时显示的,2013-4-1811:06到2013-4-1812:06时间段... 按小时查询,比如说2013-4-18 11:06 到2013-4-18 12:06 有多少条数据,是按小时显示的,2013-4-18 11:06 到2013-4-18 12:06时间段之间的数据,我在mysql里找到了方法,但oracle不行,查出来的时间类似于图,比如说2011-03-15 13点之内就只显示它,而13点之内不止一条数据 ,我不是要查他的字段,我只是查13点内数据的条数 展开
 我来答
青鸟中关村专家
推荐于2016-07-28 · 知道合伙人软件行家
青鸟中关村专家
知道合伙人软件行家
采纳数:1734 获赞数:8440
就职于北大青鸟中关村,自2004年踏入北大青鸟这个行业,已经有11年工作经验和8年的培训经验,寓教于乐

向TA提问 私信TA
展开全部

        可以使用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 广告
数据库备份是确保数据安全与业务连续性的关键环节。我们上海今至电子科技有限公司高度重视数据保护,定期执行全面的数据库备份策略。这包括使用先进工具和技术,对关键业务数据进行自动化备份,并存储在安全可靠的外部存储介质或云端。通过定期验证备份的完整... 点击进入详情页
本回答由今至电子科技有限公司提供
tj_angela
2013-04-18 · TA获得超过7530个赞
知道大有可为答主
回答量:6797
采纳率:75%
帮助的人:2564万
展开全部
select count(时间)
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函数可以截到你想要的任何时段需求
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式