oracle對時間範圍比較的語句

時間在數據庫存儲的方式有很多種,但主要以date爲主,下面以oracle爲例

一般在數據庫語句中直接寫某個時間條件例如:c_datetime<= ‘2014-08-06’或者between time1 and time2是會出錯

比較經典的錯誤爲ORA-01861: literal does not match format string

文字與格式字符串不匹配

此時需要多字符串的時間進行轉換:

to_date('time1' , 'yyyy-mm-dd hh24:mi:ss')

在具體的時間範圍語句的拼接上,一般邏輯爲若用戶設置了開始時間\結束時間則在查詢語句中拼接開始時間\結束時間的邏輯限制

sql爲一個查詢語句

if(begintime!=null){
  sql =sql + "and ps.cost_datetime>=to_date('"+ bgDate +" 00:00:00', 'yyyy-mm-dd hh24:mi:ss')";  //ps爲一個表的縮寫
}
if(endtime!=null){
  sql = sql + "and ps.cost_datetime<=to_date('"+ edDate +" 23:59:59', 'yyyy-mm-dd hh24:mi:ss')"; //ps爲一個表的縮寫
}


這裏需要看到,一般時間範圍都包括當天,所以開始時間以00:00:00開始,結束時間以23:59:59結束

這樣就可以對時間範圍比較進行查詢

一般查詢還需要分頁顯示,分頁顯示一般會查詢兩次,一次爲查詢符合條件的條數,一次爲具體的每一條記錄

如果加入了時間限制,則要在查詢條數的語句中也要添加進來時間約束

具體分頁語句請參考之前的文章


具體時間日期範圍查詢可參考http://www.2cto.com/database/201205/132096.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章