我创建了一个带有 String
列的数据库,其中包含 String
格式 (dd/mm/yyyy) 的日期。我想从两个给定日期之间的表中获取数据,但是当我尝试使用以下查询时,我发现我选择的月份和年份没有任何区别;它仅比较“dd/mm/yy”中的“dd”字段。
下面的查询将显示每个月和每年第 14 到 25 天之间的所有数据。我想要给定日期、月份和年份之间的数据。
Select * from RunningLog
where CAST(RunDate AS DATETIME) between CAST('14/04/2011' AS DATETIME) and
CAST('25/04/2011' AS DATETIME)
最佳答案
请看我的回答here关于日期如何存储(或不存储)在 sqlite3 中。 Sqlite 没有日期字段,因此它实际上存储为字符串。尝试对此进行排序/过滤将被证明是困难的。请改用 int
字段,并以毫秒为单位存储时间。
我更喜欢 INTEGER/Unix 时间存储,然后在从数据库中提取数据时使用内置的日期和时间函数进行格式化。
示例:
long millis = Calendar.getTimeInMillis();
将毫秒作为整数存储在数据库中。然后,引用第一个链接如何使用sqlite3中的日期和时间函数。
关于java - Sqlite 查询无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8703484/