我是Sqlite的初学者,并努力为我所需要的查询进行拼合。 :-( 任何人都可以帮我吗?Sqlite datediff替代Android中的订购
我有一个给定的日期,在这个变量下面我的例子中被称为“givenDate”,是Java类型的格式为YYYY-MM 日期,因此-dd。
我也有一个数据库表叫“主”与“ID”和“日期”柱,日期列条目是ISO标准的字符串格式。因此,项看看像这样:
ID Date
001 1949-08-13 06:29:21.000
002 1943-08-13 10:13:45.000
003 1948-08-13 09:12:32.100
004 etc.
我需要从表“主”比较时日期列的10个最近的日期列表与我的给定日期“givenDate”。
所以我需要:
- 通过最小的日期列每个日期进行比较,以我定的日期“givenDate”
- 制定出它们之间的绝对差值
- 责令其最大的区别
- 返回的ID和日期为每个最小10个结果的
所以,如果givenDate是1948年9月13日吨母鸡的结果将是:由于该数据库SQLite数据库
003 1948-08-13 09:12:32.100
001 1949-08-13 06:29:21.000
002 1943-08-13 10:13:45.000
etc
则DateDiff不会在Android中使用。
我试图做这样的事情:
String query =
"SELECT ID, Date" +
"FROM main" +
"WHERE Date IS NOT NULL" +
"ORDER BY ABS(date("+givenDate+") - Date) ASC" +
"LIMIT 10";
这似乎并没有工作。我只是在给定日期和升序中获得与年份相同的日期列表。日期差异似乎没有实际计算日期的差异,并给出最近的10个。
我查看了很多帖子,但找不到任何具体的东西来做我需要的东西。
任何帮助将不胜感激。
感谢, Simmy :-)
答案是:
Format sqliteDateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String query2 =
"SELECT _id, Date " +
"FROM main " +
"WHERE Date IS NOT NULL " +
"ORDER BY ABS(JULIANDAY('" + sqliteDateFormatter.format(aDate) + "') - " + "JULIANDAY(Date)) " +
"LIMIT 10";
SQLite没有变量。你如何将'givenDate'的值传递给查询? –
我已更新我的原始邮件以显示givenDate在Android中的传递方式。 我已将givenDate更改为“+ givenDate +” – Simmy