2012-09-09 88 views
0

我在SQLite數據庫執行以下查詢:沒有從SQLite中使用日期類型的查詢結果 - 的Java/Android的

" ...WHERE mydate >= '" + inicialdate + "' AND mydate <= '" + finaldate + "'"; 

mydate在數據庫中,鍵入日期字段。 inicialdatefinaldate是字符串。

這裏的想法是在用戶給出的兩個不同日期之間執行查詢。 我使用DataPicker來允許用戶輸入數據。
因此,我從DatePicker返回這些日期並將它們放在inicialdatefinaldate字符串中。

我放入字符串的日期格式是「YYYY-MM-DD」。

查詢返回的東西,當我只在finaldate字符串中放一些值,但是當我把兩個字符串中的日期,或只是在第一個,我從查詢中沒有收到任何東西。

+0

雖然['DATE'類型](http://www.sqlite.org/datatype3.html#affname)在SQLite是實際數值,SQLite的用途鍵入親和力,所以沒關係。你所描述的應該是可行的,你能提供一個查詢失敗的可運行示例嗎? – Sam

+0

讓我們說:我有我的數據庫中的數據2012-09-09。所以我想通過查詢找到它。所以我試圖把下面的值:inicialdate = 2012-09-08和finaldate = 2012-09-10。它只是不起作用。但是,當我離開inicialdate空白,我把最後日期= 2012-09-10。我出於某種原因工作。 –

+0

我刪除了我的「答案」,因爲這只是一個建議,對於評論來說太詳細了,但我的提議仍然有效,請告知我是否需要更多幫助並提供具體信息。 – Sam

回答

0

" ...WHERE mydate >= '" + inicialdate + "' AND mydate <= '" + finaldate + "'";

這塊查詢是正確的。問題出在我的代碼中,用de datapicker。

要在SQLITE中執行查詢,我需要使用格式YYYY-MM-DD。 我正在將數據直接從數據讀取器執行查詢,因此有時它會以YYYY-M-D格式檢索數據。在一個數據選取器中,當一個月或一天低於10時,它只是用一個數字表示月份或日期。

Tha解決方案只是使用if語句來查看數字是否低於10,然後在月份或日期的數字之前放置一個「0」。

那麼,這解決了這個問題在所有

1

這工作:

> sqlite3 
SQLite version 3.7.13 2012-06-11 02:05:22 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 
sqlite> create table test(mydate date); 
sqlite> insert into test values('2012-09-09'); 
sqlite> select * from test where mydate >= '2012-09-08' and mydate <= '2012-09-10'; 
2012-09-09 

是否在你的數據庫相同的查詢工作? 我猜想表中的值可能會使用不同的格式。

+0

非常感謝您的幫助,CL。我finnaly找出問題所在。你的查詢在我的代碼中運行得很好。我編輯了這個問題,並且有問題的解決方案。再次感謝! –