[jdbc] Fix date filter to be inclusive (#13734)

Fixes #9906

Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
This commit is contained in:
Jacob Laursen 2022-11-22 07:13:45 +01:00 committed by GitHub
parent 1d23c32de1
commit f9aa20e488
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 10 deletions

View File

@ -516,12 +516,12 @@ public class JdbcBaseDAO {
String filterString = ""; String filterString = "";
if (filter.getBeginDate() != null) { if (filter.getBeginDate() != null) {
filterString += filterString.isEmpty() ? " WHERE" : " AND"; filterString += filterString.isEmpty() ? " WHERE" : " AND";
filterString += " TIME>'" + JDBC_DATE_FORMAT.format(filter.getBeginDate().withZoneSameInstant(timeZone)) filterString += " TIME>='" + JDBC_DATE_FORMAT.format(filter.getBeginDate().withZoneSameInstant(timeZone))
+ "'"; + "'";
} }
if (filter.getEndDate() != null) { if (filter.getEndDate() != null) {
filterString += filterString.isEmpty() ? " WHERE" : " AND"; filterString += filterString.isEmpty() ? " WHERE" : " AND";
filterString += " TIME<'" + JDBC_DATE_FORMAT.format(filter.getEndDate().withZoneSameInstant(timeZone)) filterString += " TIME<='" + JDBC_DATE_FORMAT.format(filter.getEndDate().withZoneSameInstant(timeZone))
+ "'"; + "'";
} }
return filterString; return filterString;

View File

@ -205,9 +205,9 @@ public class JdbcBaseDAOTest {
filter.setEndDate(parseDateTimeString("2022-01-15T15:01:44")); filter.setEndDate(parseDateTimeString("2022-01-15T15:01:44"));
String sql = jdbcBaseDAO.histItemFilterQueryProvider(filter, 0, DB_TABLE_NAME, "TEST", UTC_ZONE_ID); String sql = jdbcBaseDAO.histItemFilterQueryProvider(filter, 0, DB_TABLE_NAME, "TEST", UTC_ZONE_ID);
assertThat(sql, is("SELECT time, value FROM " + DB_TABLE_NAME + " WHERE TIME>'" // assertThat(sql, is("SELECT time, value FROM " + DB_TABLE_NAME + " WHERE TIME>='" //
+ JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getBeginDate()) + "'" // + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getBeginDate()) + "'" //
+ " AND TIME<'" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getEndDate()) + "' ORDER BY time DESC")); + " AND TIME<='" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getEndDate()) + "' ORDER BY time DESC"));
} }
@Test @Test
@ -230,9 +230,9 @@ public class JdbcBaseDAOTest {
filter.setEndDate(parseDateTimeString("2022-01-15T15:01:44")); filter.setEndDate(parseDateTimeString("2022-01-15T15:01:44"));
String sql = jdbcBaseDAO.histItemFilterDeleteProvider(filter, DB_TABLE_NAME, UTC_ZONE_ID); String sql = jdbcBaseDAO.histItemFilterDeleteProvider(filter, DB_TABLE_NAME, UTC_ZONE_ID);
assertThat(sql, is("DELETE FROM " + DB_TABLE_NAME + " WHERE TIME>'" // assertThat(sql, is("DELETE FROM " + DB_TABLE_NAME + " WHERE TIME>='" //
+ JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getBeginDate()) + "'" // + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getBeginDate()) + "'" //
+ " AND TIME<'" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getEndDate()) + "'")); + " AND TIME<='" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getEndDate()) + "'"));
} }
@Test @Test
@ -246,7 +246,7 @@ public class JdbcBaseDAOTest {
filter.setBeginDate(parseDateTimeString("2022-01-10T15:01:44")); filter.setBeginDate(parseDateTimeString("2022-01-10T15:01:44"));
String sql = jdbcBaseDAO.resolveTimeFilter(filter, UTC_ZONE_ID); String sql = jdbcBaseDAO.resolveTimeFilter(filter, UTC_ZONE_ID);
assertThat(sql, is(" WHERE TIME>'" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getBeginDate()) + "'")); assertThat(sql, is(" WHERE TIME>='" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getBeginDate()) + "'"));
} }
@Test @Test
@ -254,7 +254,7 @@ public class JdbcBaseDAOTest {
filter.setEndDate(parseDateTimeString("2022-01-15T15:01:44")); filter.setEndDate(parseDateTimeString("2022-01-15T15:01:44"));
String sql = jdbcBaseDAO.resolveTimeFilter(filter, UTC_ZONE_ID); String sql = jdbcBaseDAO.resolveTimeFilter(filter, UTC_ZONE_ID);
assertThat(sql, is(" WHERE TIME<'" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getEndDate()) + "'")); assertThat(sql, is(" WHERE TIME<='" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getEndDate()) + "'"));
} }
@Test @Test
@ -263,8 +263,8 @@ public class JdbcBaseDAOTest {
filter.setEndDate(parseDateTimeString("2022-01-15T15:01:44")); filter.setEndDate(parseDateTimeString("2022-01-15T15:01:44"));
String sql = jdbcBaseDAO.resolveTimeFilter(filter, UTC_ZONE_ID); String sql = jdbcBaseDAO.resolveTimeFilter(filter, UTC_ZONE_ID);
assertThat(sql, is(" WHERE TIME>'" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getBeginDate()) + "'" // assertThat(sql, is(" WHERE TIME>='" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getBeginDate()) + "'" //
+ " AND TIME<'" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getEndDate()) + "'")); + " AND TIME<='" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getEndDate()) + "'"));
} }
private ZonedDateTime parseDateTimeString(String dts) { private ZonedDateTime parseDateTimeString(String dts) {