java.sql.SQLSyntaxErrorException:用户缺少权限或找不到对象:YEAR
java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: YEAR
我正在尝试使用 SQL 从 java 代码编写查询,以查找两个日期列之间的年差。我有一个包含 VisitDate
和 DateOfBirth
列的 table tblExportHTC
,我想计算两列之间的年数。
我的java代码块:
try {
String path = selectedFiles;
Connection conn = DriverManager.getConnection("jdbc:ucanaccess://" + path + ";jackcessOpener=app.test.CryptCodecOpener", "", "");
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("SELECT DATEDIFF(year,vis.VisitDate,vis.DateOfBirth) as date_diff "
+ " FROM tblExportHTC vis WHERE vis.ClientCode='PITC-TENT-4-093'");
while (rs.next()) {
int visits_count = rs.getInt("date_diff");
System.err.println("index_pos_from_sexual_partners: " + visits_count);
}
} catch (SQLException ex) {
ex.printStackTrace();
}
每当我尝试 运行 代码时,我都会收到错误消息
Caused by: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: YEAR
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.executeQuery(Unknown Source)
at net.ucanaccess.jdbc.UcanaccessStatement.executeQuery(UcanaccessStatement.java:216)
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: YEAR
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.ExpressionColumn.checkColumnsResolved(Unknown Source)
at org.hsqldb.QueryExpression.resolve(Unknown Source)
at org.hsqldb.ParserDQL.compileCursorSpecification(Unknown Source)
at org.hsqldb.ParserCommand.compilePart(Unknown Source)
at org.hsqldb.ParserCommand.compileStatements(Unknown Source)
at org.hsqldb.Session.executeDirectStatement(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
我想要的是获取列 VisitDate
和 DateOfBirth
之间的年数。
我找到了答案:我必须使用 TIMESTAMPDIFF()
函数而不是 DATEDIFF()
并且它似乎运行良好。
try {
String path = selectedFiles;
Connection conn = DriverManager.getConnection("jdbc:ucanaccess://" + path + ";jackcessOpener=app.test.CryptCodecOpener", "", "");
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("SELECT TIMESTAMPDIFF(year,vis.VisitDate,vis.DateOfBirth) as date_diff "
+ " FROM tblExportHTC vis WHERE vis.ClientCode='PITC-TENT-4-093'");
while (rs.next()) {
int visits_count = rs.getInt("date_diff");
System.err.println("index_pos_from_sexual_partners: " + visits_count);
}
} catch (SQLException ex) {
ex.printStackTrace();
}
我正在尝试使用 SQL 从 java 代码编写查询,以查找两个日期列之间的年差。我有一个包含 VisitDate
和 DateOfBirth
列的 table tblExportHTC
,我想计算两列之间的年数。
我的java代码块:
try {
String path = selectedFiles;
Connection conn = DriverManager.getConnection("jdbc:ucanaccess://" + path + ";jackcessOpener=app.test.CryptCodecOpener", "", "");
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("SELECT DATEDIFF(year,vis.VisitDate,vis.DateOfBirth) as date_diff "
+ " FROM tblExportHTC vis WHERE vis.ClientCode='PITC-TENT-4-093'");
while (rs.next()) {
int visits_count = rs.getInt("date_diff");
System.err.println("index_pos_from_sexual_partners: " + visits_count);
}
} catch (SQLException ex) {
ex.printStackTrace();
}
每当我尝试 运行 代码时,我都会收到错误消息
Caused by: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: YEAR
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.executeQuery(Unknown Source)
at net.ucanaccess.jdbc.UcanaccessStatement.executeQuery(UcanaccessStatement.java:216)
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: YEAR
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.ExpressionColumn.checkColumnsResolved(Unknown Source)
at org.hsqldb.QueryExpression.resolve(Unknown Source)
at org.hsqldb.ParserDQL.compileCursorSpecification(Unknown Source)
at org.hsqldb.ParserCommand.compilePart(Unknown Source)
at org.hsqldb.ParserCommand.compileStatements(Unknown Source)
at org.hsqldb.Session.executeDirectStatement(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
我想要的是获取列 VisitDate
和 DateOfBirth
之间的年数。
我找到了答案:我必须使用 TIMESTAMPDIFF()
函数而不是 DATEDIFF()
并且它似乎运行良好。
try {
String path = selectedFiles;
Connection conn = DriverManager.getConnection("jdbc:ucanaccess://" + path + ";jackcessOpener=app.test.CryptCodecOpener", "", "");
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("SELECT TIMESTAMPDIFF(year,vis.VisitDate,vis.DateOfBirth) as date_diff "
+ " FROM tblExportHTC vis WHERE vis.ClientCode='PITC-TENT-4-093'");
while (rs.next()) {
int visits_count = rs.getInt("date_diff");
System.err.println("index_pos_from_sexual_partners: " + visits_count);
}
} catch (SQLException ex) {
ex.printStackTrace();
}