Welcome 微信登录

首页 / 数据库 / MySQL / Oracle中时间处理及分时间段统计

Oracle 时间加减法由于最近在做时段加减法相关的测试工作,在网上找到了一些关于时间加减方面的算法,正好可以解决燃眉之急,也希望能够帮到更多的Oracle初学者!加法
 select sysdate,add_months(sysdate,12) from dual;        --加1年
 select sysdate,add_months(sysdate,1) from dual;        --加1月
 select sysdate,to_char(sysdate+7,"yyyy-mm-dd HH24:MI:SS") from dual;   --加1星期
 select sysdate,to_char(sysdate+1,"yyyy-mm-dd HH24:MI:SS") from dual;   --加1天
 select sysdate,to_char(sysdate+1/24,"yyyy-mm-dd HH24:MI:SS") from dual;  --加1小时
 select sysdate,to_char(sysdate+1/24/60,"yyyy-mm-dd HH24:MI:SS") from dual;  --加1分钟
 select sysdate,to_char(sysdate+1/24/60/60,"yyyy-mm-dd HH24:MI:SS") from dual;  --加1秒
减法
 select sysdate,add_months(sysdate,-12) from dual;        --减1年
 select sysdate,add_months(sysdate,-1) from dual;        --减1月
 select sysdate,to_char(sysdate-7,"yyyy-mm-dd HH24:MI:SS") from dual;   --减1星期
 select sysdate,to_char(sysdate-1,"yyyy-mm-dd HH24:MI:SS") from dual;   --减1天
 select sysdate,to_char(sysdate-1/24,"yyyy-mm-dd HH24:MI:SS") from dual;  --减1小时
 select sysdate,to_char(sysdate-1/24/60,"yyyy-mm-dd HH24:MI:SS") from dual;  --减1分钟 select sysdate,to_char(sysdate-1/24/60/60,"yyyy-mm-dd HH24:MI:SS") from dual;  --减1秒 
按时间段统计:注意,要根据Oracle中实际的类型而对sql语句做相应的改变:代码来源:select to_char((trunc(sysdate)+trunc((dtime-trunc(sysdate))*24*60/30)*30/60/24),"hh24:mi")||"-"||to_char((trunc(sysdate)+trunc((dtime-trunc(sysdate))*24*60/30+1)*30/60/24),"hh24:mi") period, avg(v1),sum(v2),count(*) "ROWS" from test where trunc(dtime)=to_date(&day,"yyyymmdd") group by to_char((trunc(sysdate)+trunc((dtime-trunc(sysdate))*24*60/30)*30/60/24),"hh24:mi")||"-"||to_char((trunc(sysdate)+trunc((dtime-trunc(sysdate))*24*60/30+1)*30/60/24),"hh24:mi") order by 1;  我的修改: 
select to_char((trunc(sysdate) +
               trunc((to_date(to_char(passvehicleinfo.passtime,
                                      "yyyymmdd hh24:mi:ss"),
                              "yyyymmdd hh24:mi:ss") - trunc(sysdate)) * 24 * 60 / 30) * 30 / 60 / 24),
       "hh24:mi") || "-" || to_char((trunc(sysdate) + trunc((to_date(to_char(passvehicleinfo.passtime, "yyyymmdd hh24:mi:ss"), "yyyymmdd hh24:mi:ss") - trunc(sysdate)) * 24 * 60 / 30 + 1) * 30 / 60 / 24), "hh24:mi")
  from passvehicleinfo
 group by to_char((trunc(sysdate) +
                  trunc((to_date(to_char(passvehicleinfo.passtime,
                                         "yyyymmdd hh24:mi:ss"),
                                 "yyyymmdd hh24:mi:ss") - trunc(sysdate)) * 24 * 60 / 30) * 30 / 60 / 24),
          "hh24:mi") || "-" || to_char((trunc(sysdate) + trunc((to_date(to_char(passvehicleinfo.passtime, "yyyymmdd hh24:mi:ss"), "yyyymmdd hh24:mi:ss") - trunc(sysdate)) * 24 * 60 / 30 + 1) * 30 / 60 / 24), "hh24:mi")更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12MySQL Workbench “Error Code: 1175” 的解决方法诊断Oracle Redo Log性能问题相关资讯      Oracle数据库入门教程 
  • 从Oracle817导入到Oracle10.2.0.4  (10/06/2012 10:51:17)
  • Oracle出现“TNS: 监听程序无法分  (10/05/2012 11:50:50)
  • Oracle中强行断开用户连接的方法  (10/04/2012 21:01:35)
  • Oracle入门教程之数据库实例管理  (10/05/2012 11:53:50)
  • ORA-12519: TNS:no appropriate   (10/05/2012 11:43:50)
  • Oracle 数据库入门教程 PPT  (06/09/2012 14:38:16)
本文评论 查看全部评论 (0)
表情: 姓名: 字数