簡體   English   中英

刪除記錄超過 7 天 MySQLite android

[英]Deleting records more than 7 days MySQLite android

我一直在嘗試刪除 MySQLite android 中超過 7 天的記錄,但沒有成功。 我試過了:

database.execSQL("delete from " + MySQLite.WORKFLOW_TABLE_NAME + " where '" + MySQLite.WORKFLOW_COLUMN_DATECREATED +
    "' < 'DATE_SUB(NOW(), INTERVAL 7 DAY)'");

database.delete(MySQLite.WORKFLOW_TABLE_NAME, "date('now') > date('" + MySQLite.WORKFLOW_COLUMN_DATECREATED + "', '+7 days')",
  null);

database.delete(MySQLite.WORKFLOW_TABLE_NAME, MySQLite.WORKFLOW_COLUMN_DATECREATED + " < '"
    + dateFormat.format(range.getTime()) + "'", null);

並且這些都不起作用。 我使用以下方法將日期保存到表中:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
ContentValues values = new ContentValues();
values.put(MySQLite.WORKFLOW_COLUMN_DATECREATED, dateFormat.format(convertStringToDate(Data.State.tripdate)));

表的日期列創建為:WORKFLOW_COLUMN_DATECREATED + " text not null, "

並將字符串轉換為日期:

public Date convertStringToDate(String dateString)
{
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
Date date = null;
try {

  date = formatter.parse(dateString);
  System.out.println(date);
  System.out.println(formatter.format(date));

} catch (ParseException e) {
  e.printStackTrace();
}
return date;

}

有人幫助pp。

Android 使用 SQLite,而不是 MySQL。 您可能需要熟悉一組不同的日期和時間函數

我的偏好是始終將日期和時間存儲為長值(自紀元以來的毫秒數),因為這對於任何類型的比較都更加方便,並且使用CalendarDateFormat等 Java 類在格式化日期字符串之間進行轉換也很容易。

否則,我建議您以yyyy-MM-dd的形式存儲日期,因為這是 SQLite 在上述鏈接中的各種日期和時間函數中接受的時間字符串格式之一。 然后,您可以使用STRFTIME('%s')輕松地將日期轉換為可比較的值(自紀元以來的秒數STRFTIME('%s') 本質上,該語句如下所示:

DELETE FROM table WHERE STRFTIME('%s', column) < STRFTIME('%s', 'now', '-7 days');

否則,您可以使用一些字符串操作函數將當前日期轉換為可以作為參數傳遞給STRFTIME 假設您的所有值都是yyyy/MM/dd ,您可以使用REPLACE函數將它們轉換為yyyy-MM-dd 在上面的語句中,它看起來像這樣:

DELETE FROM table WHERE STRFTIME('%s', REPLACE(column, '/', '-')) < STRFTIME('%s', 'now', '-7 days');

下面是我在 Java 中的做法:

String selection = "STRFTIME('%s', REPLACE(" + MySQLite.WORKFLOW_COLUMN_DATECREATED
        + ", '/', '-')) < STRFTIME('%s', 'now', '-7 days')";
int numDeleted = database.delete(MySQLite.WORKFLOW_TABLE_NAME, selection, null);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM