在我的應用程序中,我將創建日期和時間(任務)作爲日期時間字段存儲在數據庫中。如何在Sqlite(android)中從datetime字段獲取日期
在其中一個活動中,我試圖顯示創建的所有任務列表,並且我需要創建日期(只是日期而不是日期時間)作爲我的第一列。
我已經使用了listview和簡單的光標adapater來填充列表視圖。
private String [] from = { "CREATION_DATE" , "_id" , DataBaseHandler.DESCRIPTION };
private int[] to ={R.id.fh_list_entryDate ,R.id.fh_list_credits, R.id.fh_desc };
//date string will be in yyyy/mm/dd format.
fh_cursor= dbHandler.getAllHistory(bun.getString("st_date"),bun.getString("end_date"));
dataAdapter = new SimpleCursorAdapter(this,R.layout.full_history_list,fh_cursor,from,to,0);
listView.setAdapter(dataAdapter);
在getAllHistory方法查詢看起來像XML的 「fh_list_entryDate」
<EditText
android:id="@+id/fh_list_entryDate"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:inputType="date"
android:focusable="false"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceMedium" />
:
String historyQuery = "SELECT CREATION_DATE , CREDITS _id , DESCRIPTION FROM "+
ACTIVITY_DETAILS_TABLE_NAME +
" WHERE START_DT > ? "+" AND END_DT < ? ";
fh_cursor = sqlDB.rawQuery(historyQuery, new String[] {st_date,end_date});
如果我使用上面的代碼我得到「週二7月1 23:21:05 GMT-04:00 2014「在第一欄中。
我讀到了「的strftime」,我修改了查詢:
String historyQuery = "SELECT strftime('%Y-%m-%d', CREATION_DATE) CREATION_DATE,
CREDITS _id , DESCRIPTION FROM "+
ACTIVITY_DETAILS_TABLE_NAME +
" WHERE START_DT > ? "+" AND END_DT < ? ";
然後我得到的空代替日期。
我的要求是隻顯示日期部分。最好採用yyyy/mm/dd格式。或者yyyy-mm-dd格式。
我想一個選擇是使用SimpleCursorAdapter,而不是使用SimpleCursorAdapter,我們可以遍歷fh_cursor並在java代碼中使用SimpleDateFormat將日期時間轉換爲desrired格式。 我不想那樣做。有沒有一種方法可以讓我修改查詢?
閱讀[documentation](http://www.sqlite.org/datatype3.html#datetime)。 –