2016-06-29 92 views
2

我在我正在創建的一個Android應用程序上有四個按鈕。 每個按鈕都會查詢SQLite數據庫並根據日期獲取記錄。 (按鈕是'今日','周','月','全部')SQLite沒有根據日期返回正確的記錄

日期在我的表中存儲爲DATETIME,我也用日期查詢它。一切都很好,直到我抓住前一個月前完成的一切。

今天的日期是2016年6月29日

我創建6月16日2016年進入我的SQLite數據庫,並將其成功地存儲。我在2016年6月27日創建了另一個條目,並且它成功存儲。

現在我按「今日」按鈕並返回0條記錄。 (更正)

我按周鍵,返回1條記錄(正確 - 創建於6月27日)

我按下月份按鈕,返回0記錄。 (不正確的我應該得到2條)

守則

這是我用我的數據庫查詢:

String queryString = "SELECT * FROM job_quote_lookup WHERE created_at >= '" + date + "' ORDER BY created_at ASC" 

「日期」的計算,像這樣:

Calendar cal = Calendar.getInstance(); 
cal.add(Calendar.DATE, -31); 
Date fromDate = cal.getTime(); 

date = dateFormat.format(fromDate); 

(31代表一個月內可能的最大天數)

似乎問題發生在日期回到一個月時。如果我刪除20天而不是31天,那麼日期將是「6月9日」,我將會收到兩個記錄。但是如果日期進入五月,我會收到0條記錄。

其他查詢字符串我試圖

String queryString = "SELECT * FROM job_quote_lookup WHERE created_at >= date('now','-31 days') ORDER BY created_at ASC" 

這似乎沒有工作?

我還是新來的Android,所以如果這是一個壞問題,我很抱歉。我搜索了一下,但沒有找到任何可能的幫助。

更新:額外的資訊

下面是一些額外的代碼,可能會更有幫助

使用時間戳條目到我的SQLite的日期格式爲:

private String getDateTime() { 
    SimpleDateFormat dateFormat = new SimpleDateFormat(
      "dd/MM/yyyy - HH:mm", Locale.getDefault()); //"yyyy-MM-dd HH:mm:ss" - "dd-MM-yyyy HH:mm:ss" 
    Date date = new Date(); 
    return dateFormat.format(date); 
} 

日期格式當我查詢我的數據庫時使用的是:

DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); 

我不確定這是否正確,但是我離開「HH:mm」的理由是因爲「今日」選項不能正常工作,因爲它會返回比當前時間更長的一切(這顯然沒有任何時間戳)

無法解決...結束將我的數據庫DATETIME轉換爲INTEGER並以毫秒爲單位存儲日期,然後在日期格式和毫秒之間進行轉換以查詢和顯示信息。

回答

3

如果你想改變一個Java Calendar對象的月份,你將需要使用:

cal.add(Calendar.MONTH, -1); 

在上面的代碼片段將滾動月份回來的。例如,如果你在2月15日致電cal.add(Calendar.DATE, -31),你會得到一個奇怪的結果,因爲這個月不會改變,但是一天會翻一番。

更新:

必須確保你喂到MySQL的日期格式是正確的。在MySQL中期望的日期格式YYYY-MM-DD,所以用這個:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
String date = sdf.format(cal.getTime()); 

如果你期望複雜的日曆操作,我建議使用JodaTime。

+0

我已經改變了適當的代碼,但我仍然返回0條記錄。使用上面的例子記錄和相同的查詢字符串,這是字符串輸出到我的Logcat:E/QuotesList:SELECT * FROM job_quote_lookup WHERE created_at> = '29/05/2016'ORDER BY created_at ASC – Noodelz

+0

您的日期格式不正確對於MySQL,qv我更新的答案。 –

+0

我編輯了我原來的帖子,提供更多的信息,希望可以幫助:)我試着切換我的日期格式以匹配「yyyy-MM-dd」,但它返回所有記錄,不管哪個按鈕是按下。 :( – Noodelz

相關問題