bmob根據時間排序分頁查詢多條資料

2021-07-09 08:36:00 字數 1351 閱讀 4247

bmobobject預設有

createdat,

updatedat時間字段,儲存這個bmobobject物件的生成時間和更新時間。

bmob開發文件的時間查詢示例為:

如果想查詢指定日期之前的資料,則可以使用addwherelessthan或者addwherelessthanorequalto(包含當天)來查詢。

如果想查詢指定日期之後的資料,則可以使用addwheregreaterthanaddwheregreaterthanorequalto(包含當天)來查詢。

目前有乙個需求要按照

updatedat從現在到從前的順序查詢多個資料,假設

每次查詢返回的最大資料量有限制為100條,查詢返回的資料列表為lista。每次查詢則根據addwherelessthan(lista內元素中

updatedat最早的時間)進行查詢。

問題的難點在於bmob後台儲存的時間精確到微秒,而bmob資料庫向api開發的時間精度到秒,

如2016-01-05 20:20:18。

這樣一來就會出現一種情況,假如在2016-01-05 20:20:17秒有90條資料,

2016-01-05 20:20:18有20條資料,前端通過 

bmobqueryquery = new bmobquery();

string end ="2016-01-05 20:20:17";******dateformat sdf1 =new******dateformat("yyyy-mm-dd hh:mm:ss");date date1 =null;trycatch(parseexception e)

query .addwherelessthanorequalto("updatedat",newbmobdate(date1));

程式執行後會得到2016-01-05 20:20:17 的90條資料以及2016-01-05 20:20:18的前10條資料,而後10條將不會被查詢到。原因在於通過這種方式查詢的時間精度是秒,下一次的查詢的是早於2016-01-05 20:20:18的時間,而剩餘的2016-01-05 20:20:18內毫秒級別精度的資料將不會被獲得。

解決辦法就是第二次查詢通過獲取 (2016-01-05 20:20:18 - 2016-01-05 20:20:19)的所有資料以及早於(2016-01-05 20:20:18)的所有資料,並與之前獲得的資料進行比較,去除重複的。

private bmobquerygetstatemorequery()

根據時間排序分頁查詢導致部分資料丟失原因

場景 分析 select id,orderno,addtime from deal taborder by addtime desc limit 1,20如果資料庫存入時間最低單位到秒,那麼在交易多的時候表中會出現多筆在同一時間生成的訂單,當以時間排序時,資料庫難以判斷時間先後,當這種無法分辨的記錄...

JPA根據時間區間分頁查詢(前後端分離)

本記錄側重於時間區間的查詢,所以只顯示部分 學習備用 資料庫 column name add time private long addtime 控制層 其實邏輯 應該是寫在service層的 下次注意 restcontroller public class apiordercontroller s...

iOS 根據時間排序

這個是回答這篇文章的問題 建立個date模型 import inte ce date nsobject property nonatomic,copy nsstring time end之後賦值進行排序 date d1 date alloc init d1.time 2012 12 02 date ...