如何在SQLite中测试早于当前日期的日期

时间:2013-04-08 18:13:15

标签: java database sqlite loops resultset

我正在使用SQLite存储一些数据,我知道日期对象不能存储在SQLite数据库中,所以我使用的是字符串。

我的问题是我想检查表的最早日期。因此,如果有2张卡片是01/04/2013和04/05/2013,我想知道01/04/2013是较早的日期并返回该行。

到目前为止,我已经提出了两个解决方案:

对数据库的多次查询

我已经能够实现一个成功的解决方案,它将遍历数据库并将日期对象减少1,然后将其用作匹配日期的字符串。问题是在找到最早的日期之前可能需要查询数据库100次。这样做是不好的做法?

通过结果集迭代

另一种可能性是迭代表中所有抽认卡的结果集。但是,这将涉及2个循环,一个迭代表中的每一行,这将在一个循环内,将日期减少1。

我觉得这两个都不是很好的解决方案。我想知道是否有人可以帮助我以更有效的方式实现这一目标?

2 个答案:

答案 0 :(得分:5)

如果您以YYYY-MM-DD格式存储日期,则可以像使用实际日期数据类型一样使用<>BETWEEN。使用YYYY-MM-DD日期格式,词典顺序与时间顺序相同。

额外的好处是YYYY-MM-DD日期格式与SQLite Date And Time Functions兼容。

答案 1 :(得分:1)

将日期存储为1970年1月1日以来的天数。

这样,SQL就变成了

Select MIN(days)