gpt4 book ai didi

java - 使用数据库列值到 Date() sqlite android 时出现问题

转载 作者:行者123 更新时间:2023-12-02 01:50:37 25 4
gpt4 key购买 nike


我有一个小问题,我用谷歌搜索了很多次,但我无法得到它......
我正在使用查询(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 entered by user to get events of that date

DATE: date of every event in the table

REPETETIONS: dynamic number (column in the same table)

问题出在日期函数中使用 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')";

最佳答案

此语句中的变量REPETITIONS:

String selectQuery = "SELECT DISTINCT * FROM " + TABLE_NAME + " WHERE "
+ DATE + " = date('" + targetDate + "',' " + REPETITIONS + " day') ";

应该是数字而不是列名。
SQLite 中的 date 函数有多种语法,但您使用这个:

SELECT date('2014-10-23','+7 day');

您必须在之前提供一个号码。

编辑试试这个:

String selectQuery = "SELECT DISTINCT * FROM " + TABLE_NAME + " WHERE "
+ DATE + " = date('" + targetDate + "', " + REPETITIONS + " || ' day') ";

关于java - 使用数据库列值到 Date() sqlite android 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53030681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com