Oracle sql生成連續時間

2021-08-14 19:09:42 字數 2160 閱讀 7813

資料表中有基於穩定頻次(如5秒一次,10分鐘一次)的流水資料,在頁面中畫曲線圖時,若某段時間資料突然中斷,此時若直接select資料表則看不到中斷的情況。正確處理方式應是基於連續時間關聯該資料表查詢。oracle中可用 connect by生成連續時間。如以下sql語句將生成連續的24小時:

select trunc((to_date('2018-01-22 00:00','yyyy-mm-dd hh24:mi')-(25-rownum)/24),'hh') serialtime from dual connect by rownum <= 24
其他生成連續的年、月、周、日、分類似

public static void serialtime(int type,mapparams)catch (exception e)

string s=null;

string truncformat=null;

string charformat=null;

long interval;

if (type==constants.time_minute) else if (type==constants.time_hour)

interval=duration.between(start, end).tohours();

s="select trunc((to_date('"+enddate+"','yyyy-mm-dd hh24:mi')-("+(interval+1)+"-rownum)/24),'hh') serialtime from dual connect by rownum <= "+interval;

truncformat="hh";

charformat="mm-dd hh24";

}else if (type==constants.time_day)

interval=duration.between(start, end).todays();

s="select trunc((to_date('"+enddate+"','yyyy-mm-dd hh24:mi')-("+(interval+1)+"-rownum)),'dd') serialtime from dual connect by rownum <= "+interval;

truncformat="dd";

charformat="mm-dd";

}else if (type==constants.time_week)

interval=duration.between(start, end).todays()/7;

s="select trunc((to_date('"+enddate+"','yyyy-mm-dd hh24:mi')-("+(interval+1)+"-rownum)*7),'iw') serialtime from dual connect by rownum <= "+interval;

truncformat="iw";

charformat="mm-dd";

}else if (type==constants.time_month)

interval=duration.between(start, end).todays()/14;

s="select distinct trunc((to_date('"+enddate+"','yyyy-mm-dd hh24:mi')-rownum*14),'mm') serialtime from dual connect by rownum <= "+interval+" order by serialtime";

truncformat="mm";

charformat="yyyy-mm";

}params.put("timesql",s);

params.put("truncformat","'"+truncformat+"'");

params.put("charformat","'"+charformat+"'");

system.out.println(s);

}/**

* 解析前端laydate開始結束日期

* @param startenddate

* @return

*/private static string parselaydate(string startenddate)

反射實體模型生成Oracle SQL指令碼

反射真是很好用的東東。因為公司要用oracle資料庫,而實體模型是現有的。於是就想著用反射來找到實體中的實體類和屬性,然後來生成sql指令碼。貼一下 生成sql的方法 static void generateoraclesql if p.name.tolower endswith id else c...

SQL快速生成連續整數

很多時候需要用到連續的id進行資料對比,如判斷是否連續等問題。那麼,生成連續整數的方式有多種,首先容易想到的是逐步迴圈,如果想生成2kw條記錄,則需要迴圈2kw次進行插入,那麼有沒有其他方式呢,效率相對於逐步加一有多少提公升呢。首先建立一張存放記錄的表,插入1條記錄。create table dbo...

Oracle SQL 求兩個時間差

三個字段分別表示時間,字段 info 格式為 2019 10 10 05 13 字段 mydate 格式為 2019 10 10 字段 mytime 格式為 03 24 想求這兩個時間的差,首先要把 mytime 帶上日期,與 mydate 字段拼接,其次將 info 與 拼接後的字段做差。orac...