【发布时间】:2019-04-01 12:14:41
【问题描述】:
我有一个小问题,我用谷歌搜索了很多次,但我无法得到它...
我正在使用查询(sqlite)来检索一些数据..
在此查询中,它们是 Date() 用于增加某些日期的动态天数(来自同一表中的列)..
如果我把这天设为静态(1,2,3,.....)它工作正常,但如果我输入列名它不会。
此查询失败,我希望它工作:
String selectQuery = "SELECT DISTINCT * FROM " + TABLE_NAME + " WHERE "
+ DATE + " = date('" + targetDate + "',' " + REPETITIONS + " day') ";
这很好用:
String selectQuery = "SELECT DISTINCT * FROM " + TABLE_NAME + " WHERE "
+ DATE + " = date('" + targetDate + "','2 day') ";
在哪里
targetDate:用户输入的日期以获取该日期的事件
DATE:表中每个事件的日期
REPETETIONS:动态数(同表中的列)
问题是在日期函数中使用 REPETITIONS...
创建语句
String SQL_CREATE_EVENT_TABLE = "CREATE TABLE " + TABLE_NAME + " ( " +
ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
TITLE + " TEXT ," +
DATE + " TEXT , " +
IS_NOTIFY + " INTEGER , " +
NOTIFICATION_TIME + " TEXT ," +
REPEAT + " INTEGER ," +
REPEAT_DURATION + " INTEGER ," +
REPETITIONS + " INTEGER ," +
CERTAIN_DATE + " TEXT ," +
NOTE + " TEXT ," +
IS_SPOKEN + " INTEGER " +
" );";
这是选择语句
String selectQuery = "SELECT DISTINCT * FROM " + TABLE_NAME + " WHERE " + DATE + " = '" + targetDate
+ "' OR (( " + REPEAT + " = '1' AND " + REPEAT_DURATION + " = '0' ) AND " + DATE + " <= '" + targetDate + "')"
+ " OR( " + REPEAT + " = '1' AND " + REPEAT_DURATION + " = '3' ) AND " + DATE + " <= '" + targetDate + "' AND " + CERTAIN_DATE + " >= '" + targetDate + "'"
+ " OR (" + REPEAT + " = '1' AND " + REPEAT_DURATION + "= '2' ) AND " + targetDate + " >= '" + DATE + "' AND "+ targetDate+ " <= date('" + DATE + "','" + REPETITIONS + " days')";
【问题讨论】:
-
能否请您显示有效的 SQL 语句和无效的 SQL 语句?
-
这是有效的
String selectQuery = "SELECT DISTINCT * FROM " + TABLE_NAME + " WHERE " + DATE + " = date('" + targetDate + "',' 2 day') ";但这不是。String selectQuery = "SELECT DISTINCT * FROM " + TABLE_NAME + " WHERE " + DATE + " = date('" + targetDate + "',' " + REPETITIONS + " day') ";@Corion -
请使用附加信息编辑您的问题。另外,这是一个有效的查询还是一个失败的查询?请同时显示一个失败的查询。
-
REPETITIONS是您主程序中的变量吗?否则,您需要将连接放入 SQL 中。在发送到 SQLite 之前打印出你得到的 SQL。它应该看起来像 `SELECT ... WHERE date_column = date('2018-10-28', to_char(repetitions)+' day')" 或类似的东西。 -
我展示了工作和失败......重复是全局字符串,它是@Corion 列的名称
标签: java android sqlite date android-sqlite