repository層
@query(nativequery = true, value = "select * from alarms where id = :id and alarmtime = to_date(:alarmtime)")
optionalfindbykey(@param("id") long id, @param("alarmtime") string alarmtime);
注意,可能會有人用to_number(alarmtime) = :alarmtime(alarmtime傳時間戳)來比較,這樣是不正確。這種方法是先將整個alarmtime這一列做轉換,然後再比較,如果資料量太大,速度會急速下降。所以sql語句最好不要整個列加方法,而是應該對要比較的條件處理和列的原始值比較。
service層
public alarm getbyidandalarmtime(long id, long alarmtime)
timezone tz = timezone.getdefault();
int offset = tz.getoffset(system.currenttimemillis());
date alarmdate = new date(alarmtime - offset);
******dateformat ******dateformat = new ******dateformat("yyyy-mm-dd hh:mm:ss.sss");
string format = ******dateformat.format(alarmdate);
optionaloptionalalarm = alarmrepository.findbykey(id, format);
if (!optionalalarm.ispresent())
return optionalalarm.get();
}
這裡需要注意兩點:1、時間精確到毫秒的格式正則。2、在phoenix中to_date是有時差的,所以呼叫之前要先獲取系統當前時區,調整alarmtime。 Phoenix實現分頁查詢
1 利用offset語法,官網的語法 elect from test limit 1000 select from test limit 1000 offset 100 2 公式如下 select from test limit pagesize offset pagenum 1 pagesize ...
Phoenix 九 分頁查詢
所謂分頁查詢就是從符合條件的起始記錄,往後遍歷 頁大小 的行。資料庫的分頁是在server端完成的,避免客戶端一次性查詢到大量的資料,讓查詢資料資料分段展示在客戶端。對於phoenix的分頁查詢,怎麼使用?效能怎麼樣?需要注意什麼?將會在文章中通過示例和資料說明。limit offset start...
mysql日期查詢 mysql 查詢日期
檢視本月資料 select from content publish where date format publish time,y m date format date sub curdate interval 0 month y m 檢視上個月資料 select from content pu...