尝试查询某个日期范围内的记录,执行查询时,Java 控制台会抛出“UCAExc:::4.0.4 未知令牌:” 它不显示令牌
通过反复试验,我发现错误在于库理解查询的日期范围之间,
String sql = reportMaster.getQuery();
Statement statement = connection.createStatement();
ResultSet result = statement.executeQuery(sql);
当直接在 Microsoft Access 中执行时,这已经可以工作并且应该生成 3 个字段,而不是在 java 控制台中抛出未知令牌错误 编辑:
我分块测试了原始查询(如下),看看是否存在语法错误,记录可以按状态和单个日期过滤,但不接受日期范围
SQL语句是:
SELECT ID from event
WHERE status = 'Offline' AND (event_date >= #01/09/2017# AND event_date <= #21/04/2018#)
我在 Access 数据库中遇到了类似的问题,该数据库有一个日期/时间列,我需要在其中选择一个范围。 以下是一些最终起作用的片段。 我意识到这是一个 5 年前的问题,但是当我得到
UCAExc:::4.0.4 unknown token:
时,我发现自己遇到了与 OP 类似的日期格式问题。
int minutesSpan = 1;
String[] sqlSpan = getSqlSpanValues(minutesSpan);
String query = "select * from " + recordsTableName + " where (STARTTIME >= " + sqlSpan[0] + " and STARTTIME <= " + sqlSpan[1] +")";
.
.
.
private static final SimpleDateFormat DFSQL = new SimpleDateFormat("#yyyy-MM-dd HH:mm:ss#");
public String[] getSqlSpanValues(int minutes) {
int seconds = minutes * 60 / 2;
String[] earlyLateArray = new String[2];
Calendar early = (Calendar) start.clone(); early.add(Calendar.SECOND, -seconds);
Calendar late = (Calendar) start.clone(); late.add(Calendar.SECOND, seconds);
earlyLateArray[0] = DFSQL.format(early.getTime());
earlyLateArray[1] = DFSQL.format(late.getTime());
return earlyLateArray;
}