java - Sqlite 查询无法正常工作

标签 java android sql

我创建了一个带有 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/

相关文章:

mysql - 不同行的 SQL SUM()

Java反射: how to get the class of a method's generic type?

java - Google App Engine 使用 appcfg.sh 进行回滚

机器人工作室。我询问有关项目点击监听器功能的使用。它是如何工作的?

java - 如何分配onGifSelected?

sql - 从行中获取逗号分隔的字符串

java - JAXB 解码返回空值

java - getTimeInMilis() 和 .getTime().getTime() 有什么区别?

java - Android PopupWindow showAtLocation() vs showAsDropDown() - 第一个对我有用,第二个不是

php - MYSQL 查询 - 基于同一表中另一列中的 DISTINCT 值从一列返回所有值的简单方法?