2011-06-15 81 views
0

我正在爲我的應用程序使用SQLite數據庫。Android中的SQLite日期查詢

表的結構是這樣:

_id : integer primary key 
name : text 
day : date 

我能夠存儲日期格式:dd-mmmmm-yyyy如。 15-June-2011

但是當我試圖從數據庫中檢索按日期過濾的所有記錄時,它將返回空值。

database.query(DATABASE_TABLE, new String[] { "strftime('%d-%mm-%Y',date('now'))","strftime('%d-%m-%Y',"+KEY_DAY+")" }, 
"strftime('%d-%m-%Y',date('now'))=" + KEY_DAY , null,null,null,null,null); 

即使有一些匹配的日期,它沒有與黃鱔的日期匹配。

我已經通過SQLite的文檔。但還沒有找到任何解決方案。

我想有這樣的:

select * from table where day=curdate(); 

我該怎麼做同樣的任務SQLite中? (是的,我可以靈活地更改存儲在數據庫中的日期格式)

對於同一個任務,其他的選擇是什麼?

+0

我懷疑%mm是正確的在你的字符串'%d-%mm-%Y' – 2011-06-15 05:30:37

+0

http://stackoverflow.com/questions/4013508/andorid-sqlite-date-comparation你嘗試過嗎? – 2011-06-15 05:38:26

+0

我不認爲strftime是一個內置的SQLite函數。 – 2011-06-15 05:40:38

回答

3

在Java編程中,您可以將任何日期格式轉換爲長(以毫秒爲單位),反之亦然。我的意見是在java中將格式的日期格式保存爲長格式,然後將長時間的日期值存儲在數據庫中。在檢索時,您也可以檢索長整型值,然後根據您的預期日期格式進行格式化。我一直在使用這種類型的邏輯來處理幾個應用程序。

謝謝 Deepak。

0

函數strftime('%d-%m-%Y',date('now'))返回一個字符串,數字格式的月份(從01到12)。據我所知,從the docs可以看出,沒有格式說明符來返回月份的全名。

我想你必須使用數字月份說明符而不是名稱來存儲日期。

+0

所以我還必須更改日期格式,同時將其存儲在數據庫中?如果是,哪種格式最好呢? – 2011-06-15 05:39:06

+0

@Kartik - 這些選項在數據類型的文檔中有描述。如果僅僅因爲它們沒有Unix時間的限制(在幾十年內溢出32位並且在1​​970年1月1日之前出現問題),我會去使用ISO格式的TEXT或Julian date REAL。 – 2011-06-15 06:12:22