我是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