2013-02-07 78 views
5
前一天

所有記錄我在我的數據庫如下表:SQLite的選擇今天和

database.execSQL("create table " + TABLE_LOGS + " (" 
      + COLUMN_ID + " integer primary key autoincrement," 
      + COLUMN_ID_DAY_EXERCISE + " integer not null," 
      + COLUMN_REPS + " integer not null," 
      + COLUMN_WEIGHT + " real not null," 
      + COLUMN_1RM + " real not null," 
      + COLUMN_DATE + " integer not null" 
      + ")"); 

我存儲在COLUMN_DATE場(整數)Unix時間戳。

現在我有以下的功能,抓住所有的記錄:

public Cursor fetchCurrentLogs(long dayExerciseDataID) { 
    // where day = today 
    Cursor cursor = database.rawQuery("select " + MySQLiteHelper.COLUMN_ID + "," + MySQLiteHelper.COLUMN_REPS + ", " + MySQLiteHelper.COLUMN_WEIGHT + " " + 
      "from " + MySQLiteHelper.TABLE_LOGS + " " + 
      "where " + MySQLiteHelper.COLUMN_ID_DAY_EXERCISE + " = '" + dayExerciseDataID + "'", null); 
    if (cursor != null) { cursor.moveToFirst(); } 
    return cursor; 
} 

現在我想做的事,就是我想使這個功能只搶了記錄今天。

然後我想使另一個函數完全相同,但是不是今天獲取記錄,而是希望它獲取前一天的記錄。在此之前,我的意思是最近一天的記錄不是今天。所以它可能是昨天,或3天前,或一個月前。

我知道在MySQL中,你可以當天做這樣的事情:

where date_format(from_unixtime(COLUMN_DATE), '%Y-%m-%d')= date_format(now(), '%Y-%m-%d')

什麼是相當於這個SQLite的?

另外,任何人都可以幫助我如上所述前一天的where子句?

非常感謝。

+0

COLUMN_DATE的值是多少?是在Unix時間戳? –

回答

14
String sql = "SELECT * FROM myTable WHERE myDate >= date('now','-1 day')"; 
Cursor mycursor = db.rawQuery(sql); 

編輯:

SELECT * from Table1 where myDate = (select max(myDate) from Table1 WHERE myDate < DATE('now')) 
+0

我只需要選擇前一天的記錄,而不是前幾天。明白我的意思了嗎?因此,假設我今天在數據庫中有條目,並且在3天前和6天前,我想要一個函數獲取今天的記錄,另一個函數獲取3天前的記錄。 – scarhand

+0

你的編輯工作真棒。謝謝! – scarhand

+0

嗨,我需要獲取當前日期的最後5分鐘的記錄,那麼我該如何實現? @Yaqub –

-2

不要在您的SQL語句中進行轉換。在Java方法中進行轉換。讓你的Java方法創建完整的SQL語句。您只需要一個將Java DateTime轉換爲unix格式的函數。

Cursor cursor = database.rawQuery("select " + MySQLiteHelper.COLUMN_ID + "," + MySQLiteHelper.COLUMN_REPS + ", " + MySQLiteHelper.COLUMN_WEIGHT + " " + 
      "from " + MySQLiteHelper.TABLE_LOGS + " " + 
      "where " + MySQLiteHelper.COLUMN_ID_DAY_EXERCISE + " = '" + dayExerciseDataID + 
      " OR " + MySQLiteHelper.COLUMN_ID_DAY_EXERCISE + " = '" + previousDay(dayExerciseDataID) + 
"'", null); 

您只需要創建previousDay方法。

0

可能是太晚了,但是,它可以幫助別人。我沒有做不同的是以前的開發者,我只想把我的版本,也許它甚至不是最好的...

String selectQuery = "SELECT * FROM "+Your_table+" 
WHERE ("+Column_1+" = "+Value_For_Column1+" AND date("+Your_Column_With_Time_Values+") == date('now')) AND 

"+Some_Other_Column+" = "+Some_Other_Value+" OR "+Some_Other_Column+" = "+Some_Other_Value+" ORDER BY "+Your_Column+" DESC"; 

如果可能會出現一些錯誤,它可能是容易因字符串連接。 謝謝!