Oracle中時間處理及分時間段統計

來源:互聯網
上載者:User

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.bkjia.com/topicnews.aspx?tid=12

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.