我正在使用SQLite存储一些数据,我知道日期对象不能存储在SQLite数据库中,所以我使用的是字符串。
我的问题是我想检查表的最早日期。因此,如果有2张卡片是01/04/2013和04/05/2013,我想知道01/04/2013是较早的日期并返回该行。
到目前为止,我已经提出了两个解决方案:
对数据库的多次查询
我已经能够实现一个成功的解决方案,它将遍历数据库并将日期对象减少1,然后将其用作匹配日期的字符串。问题是在找到最早的日期之前可能需要查询数据库100次。这样做是不好的做法?
通过结果集迭代
另一种可能性是迭代表中所有抽认卡的结果集。但是,这将涉及2个循环,一个迭代表中的每一行,这将在一个循环内,将日期减少1。
我觉得这两个都不是很好的解决方案。我想知道是否有人可以帮助我以更有效的方式实现这一目标?
答案 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)