2010-05-26 74 views
2

我知道SQLite將日期存儲爲長整數。當我使用標準的方法(使用數據讀入一個遊標的查詢()方法即)讀取的行,其結果是,其包括的時間的日期字符串:日期類型和Android數據庫

2010-05-25 19:52:04 

如果我想要不同的格式,我必須將字符串解析回日期 - 可能,但稍微向後。

通過使用ViewBinder(如this question中所建議的),我可以做任何我想做的事情,但日期在重寫的方法執行時已經是一個字符串了。

對上述問題的接受答案還表明,將日期存儲爲多個將有助於避免此問題。我不想那麼做,以防萬一我想用我的數據解釋我的數據而不是這個應用程序。也許我想通過提供商公開它。

更糟糕的是,通過

android.text.format.DateFormat.getDateFormat(getApplicationContext()) 

獲得DateFormat實例無法解析由光標返回這樣的日期字符串。實際上沒有可以做到的靜態方法 - 這是一種單向轉換,顯然是一種疏漏。

有沒有辦法在數據庫適配器中處理這個問題,即控制光標所包含的日期格式,以便我不必更改模式,也不必分析默認輸出成日期類型?

到目前爲止的答案表明我應該在數據庫中執行輸出格式。我不想因爲多種原因這樣做,最主要的是因爲我不能以這種方式基於用戶的語言環境格式化日期(不容易,那是)。

回答

1

的SQLite有許多內置date and time functions.

+0

我使用android.database.sqlite.SQLiteD atabase.query(),它需要一個列名稱列表。你是說我必須手動編碼查詢嗎? – cdonner 2010-05-26 03:12:25

+0

@cdonner,是的,使用android.database.sqlite.SQLiteDatabase.rawQuery()。 – 2010-05-26 13:37:51

+0

@cdonner,或者(我無法測試它,因爲我手邊沒有Android平臺)我不知道給android.database.sqlite.SQLiteDatabase.query()一個列名「strftime('%Y - %m-%d',date_colname)「會做什麼? – 2010-05-26 14:46:53

0

無需獲得日期列字符串,你應該能夠使用getLong(..)並創建一個合適的對象Date像這樣:

Date created = new Date(cursor.getLong(createdDateIndex)); 
相關問題