SqLite如何找出包含日期格式的请求?

时间:2013-02-14 09:05:42

标签: android sqlite

我正在开发一个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,其格式与数据库中的日期相同。

我使用convert执行相同的请求(Sql server端),工作正常。我认为关键字date在SqLite中不可用。

还有另一种方法吗?

2 个答案:

答案 0 :(得分:1)

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

这与documentation

一致
  

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

     
      
  • TEXT as ISO8601字符串(“YYYY-MM-DD HH:MM:SS.SSS”)。
  •   
  • 真实的朱利安日数,即公元前4714年11月24日格林威治中午以来的天数。根据预感格里高利历。
  •   
  • INTEGER as Unix Time,自1970-01-01 00:00:00 UTC以来的秒数。
  •   

答案 1 :(得分:1)

下面:

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

在1.2节你可以看到约会格式的选项(我也建议将这个网站加入书签,因为它非常有用)

我个人喜欢使用UNIX UTC时间系统,因为使用>,<<<和=它是一种通用系统,因为它不关心区域化。