0

我正在嘗試創建一個簡單的提醒應用程序。我只是邏輯思考這個過程。基本上我希望能夠選擇一個日期和時間,例如星期一15:00,這將觸發每個星期一15:00,直到它從數據庫中刪除。說完這個例子,我有問題要完成這個過程。Android使用日期和SQLite

我將如何存儲DAY和TIME,什麼類型,我需要不同的列在我的表中? 如何將實時日期與當前日期進行比較,因此如果星期一的實時時間僅在星期一提醒,則會提醒?這可能嗎?

我需要主要使用日曆專注嗎?

回答

0

由於documentation說:

SQLite沒有存儲類存儲日期 和/或時間預留。相反,SQLite的內置日期和時間函數能夠將日期和時間存儲爲TEXT,REAL或INTEGER值。

您可以存儲日期和時間在下列格式TEXT類型的字段:

YYYY-MM-DD HH:MM:SS.SSS

,然後使用內置的SQLite的date & time functions來過濾記錄。

另一種選擇是存儲日期&時間爲毫秒的時間戳和寫入適當的查詢,用於選擇數據,或使用約達文庫進行篩選或日期&時間變換,但可能這樣的解決方案將是低效率的並且比方便少第一個選項。

+0

所以如果我創建了3列。日,開始時間,結束時間。我可以比較例如,如果星期一輸入是星期一,我可以使用%星期一%從日曆對象getDay與當前日期進行比較 – Mark 2015-03-13 15:38:30

+0

我認爲,在您的情況下,用於表示日期和時間的許多列可能是合理的,如果您想要訪問一週中的某幾天的記錄。您甚至可以存儲從1到7(或從0到6)的數字,以表示一週的幾天,並且與存儲字符串的情況相比,使用較少的數據庫存儲。 – 2015-03-13 15:57:43

+0

因此,如何將SQLite中存儲的日期與當前現實生活中的日期進行比較 – Mark 2015-03-13 16:04:52

0

使用整數列是最簡單的解決方案。

只需存儲以毫秒爲單位的日期(Calendar.getTimeInMillis())和您的好去處。

然後你只需要搜索該整數找到您的數據庫中正確的事件:

String selectQuery = "SELECT whateveryouneed FROM events WHERE date_event > ?"; 
Cursor c = db.rawQuery(selectQuery, new String[] { String.valueOf(calendar.getTimeInMillis())}); 
... 

如果你需要找到所有的活動一天,你只需要找到的限制以毫秒爲單位並根據這些限制進行查詢