特定の従業員(employeeId - 整数)の日付(end_time - timestamp)が基準日よりも大きいデータベースに保存された時間のリストを削除しようとしています。 )。 クエリはpgAdmin IIIで完全に機能します。しかし、私はそれをJDBCで動作させることはできません。 それは動作しますが、私はその特定の従業員から、すべてのものを削除します。 Where節の日付は無視されるようです。また、例外はありません。 変数nextDayTimestampは次のようになります: '2017-03-31 12:00:00.0' 誰かが助けてくれますか?PgAdmin 3で動作しているがJavaで動作していないクエリを削除する
public void deleteBigListOfPeriodOfWorkFutureOnly(int employeeId, LocalDate referenceDate) {
Connection myConn = null;
PreparedStatement myStmt = null;
try {
myConn = dataSource.getConnection();
LocalDate nextDay = referenceDate.plusDays(1);
Timestamp nextDayTimestamp = Timestamp.valueOf(LocalDateTime.of(nextDay, LocalTime.NOON));
String sql = "delete from working_time where working_time.end_time > ? and employee_id = ?";
myStmt = myConn.prepareStatement(sql);
myStmt.setTimestamp(1, nextDayTimestamp);
myStmt.setInt(2, employeeId);
myStmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
CloseConnection.close(myConn, myStmt, null);
}
}
}
データベース内の 'end_time'とは何ですか、タイムスタンプか日時ですか? –
私は最初の条件は常に真実であると思います。@ GuillaumeF.saidのように、型と何か関係があるかもしれません。 –
@GuillaumeF。 end_timeはタイムゾーンなしのタイムスタンプです。 – evzpav