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 專題頁面 ?tid=12
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com