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())}); 
... 

如果你需要找到所有的活动一天,你只需要找到的限制以毫秒为单位并根据这些限制进行查询