亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何選擇日期在 date1 和 date2 之間的記錄?

如何選擇日期在 date1 和 date2 之間的記錄?

Qyouu 2022-10-07 16:39:34
SQLiteDatabase db = DatabaseProvider.dbHelper.getReadableDatabase();Cursor cursor = db.rawQuery("Select * from " + ConsumerEnquiryTable.TABLE_NAME + " where "            + ConsumerEnquiryTable.Cols.USER_LOGIN_ID + "='" + userId + "' AND ( CAST("            + ConsumerEnquiryTable.Cols.DUE_DATE + " as datetime) >= CAST(" + beginDate  +            " as datetime) AND CAST(" + ConsumerEnquiryTable.Cols.DUE_DATE + " as datetime) <= CAST("+ endDate + " as datetime)) AND "            + ConsumerEnquiryTable.Cols.CARD_STATUS + "='" + jobCardStatus + "'", null);我嘗試過使用 CAST、strftime、datetime。due_date 列是 varchar 類型,我想選擇在 beginDate 和 endDate 之間具有到期日期的記錄。所有日期均為 dd/MM/yyyy 格式
查看完整描述

2 回答

?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

如果您將列的DUE_DATE格式更改YYYY-MM-DD為 SQLite 唯一可比較的格式,那么您只需要一個BETWEEN子句并將所有參數作為字符串數組傳遞,這是避免任何 sql 注入風險的推薦最安全的方法:


Cursor cursor = db.rawQuery(

    "SELECT * FROM " + ConsumerEnquiryTable.TABLE_NAME + " WHERE " + 

    ConsumerEnquiryTable.Cols.USER_LOGIN_ID + " = ? AND (" +

    ConsumerEnquiryTable.Cols.DUE_DATE + " BETWEEN ? AND ?) AND " +

    ConsumerEnquiryTable.Cols.CARD_STATUS + " = ?", 

    new String[] {userId, beginDate, endDate, jobCardStatus}

);

當然,參數 beginDate 和 endDate 也必須采用YYYY-MM-DD格式。


查看完整回答
反對 回復 2022-10-07
?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

您可以使用以下查詢

mDb.query(MY_TABLE, null, DATE_COL + " BETWEEN ? AND ?", new String[] {
                minDate + " 00:00:00", maxDate + " 23:59:59" }, null, null, null, null);


查看完整回答
反對 回復 2022-10-07
  • 2 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號