0

我正在开发一个 android 项目,该项目从数据库中检索信息并将其存储(使用 SqLite for Java 端)。

这是我的要求:

String Query = 

"SELECT xxx.APP_ID " + "FROM xxx INNER JOIN yyy ON
xxx.APP_ID = yyy.APP_ID " +

"WHERE date('"+mydate+"') BETWEEN date(xxx.APP_DATEBEGIN) AND date(xxx.APP_DATEEND)
" +

"AND (yyy.USR_ID = " + myid + ") " +

"ORDER BY xxx.APP_DATEBEGIN";

mydate格式为:YYYY-MM-DD HH:MM:SS与数据库中的日期格式相同。

我使用转换执行相同的请求(Sql 服务器端),效果很好。我认为该关键字date在 SqlLite 中不可用。

还有另一种方法可以做到这一点吗?

4

2 回答 2

1

在 SQLite 中,您不需要使用任何函数来表示日期 - 只需使用包含日期的纯字符串:SQLFiddle demo

这与文档一致:

SQLite 没有为存储日期和/或时间预留存储类。相反,SQLite 的内置日期和时间函数能够将日期和时间存储为 TEXT、REAL 或 INTEGER 值:

  • TEXT 作为 ISO8601 字符串(“YYYY-MM-DD HH:MM:SS.SSS”)。
  • REAL 作为儒略日数字,根据预测的公历,自公元前 4714 年 11 月 24 日格林威治中午以来的天数。
  • INTEGER 作为 Unix 时间,自 1970-01-01 00:00:00 UTC 以来的秒数。
于 2013-02-14T09:16:06.720 回答
1

这里:

http://www.sqlite.org/datatype3.html

在第 1.2 节中,您可以看到约会格式的选项(我还建议将此站点添加为书签,因为它非常有用)

我个人喜欢使用 UNIX UTC 时间系统,因为使用 >、< 和 = 很容易与其他日期进行比较,而且它有点像一个通用系统,因为它不关心区域化。

于 2013-02-14T09:16:54.317 回答