]> git.basschouten.com Git - openhab-addons.git/commitdiff
[jdbc] Fix date filter to be inclusive (#13734)
authorJacob Laursen <jacob-github@vindvejr.dk>
Tue, 22 Nov 2022 06:13:45 +0000 (07:13 +0100)
committerGitHub <noreply@github.com>
Tue, 22 Nov 2022 06:13:45 +0000 (07:13 +0100)
Fixes #9906

Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcBaseDAO.java
bundles/org.openhab.persistence.jdbc/src/test/java/org/openhab/persistence/jdbc/internal/db/JdbcBaseDAOTest.java

index b8a68a26bf9b4ac9a673324667194e4c36eab111..b0b4aae9ce8e26a60f6c6c70cd63181dd29aa7f7 100644 (file)
@@ -516,12 +516,12 @@ public class JdbcBaseDAO {
         String filterString = "";
         if (filter.getBeginDate() != null) {
             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) {
             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;
index eb3528e9987ae372622bf41695af3669452a1929..0ba8d9cd5b6caee48ab680b4e7b2b4f1c20ba23a 100644 (file)
@@ -205,9 +205,9 @@ public class JdbcBaseDAOTest {
         filter.setEndDate(parseDateTimeString("2022-01-15T15:01:44"));
 
         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()) + "'" //
-                + " 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
@@ -230,9 +230,9 @@ public class JdbcBaseDAOTest {
         filter.setEndDate(parseDateTimeString("2022-01-15T15:01:44"));
 
         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()) + "'" //
-                + " AND TIME<'" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getEndDate()) + "'"));
+                + " AND TIME<='" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getEndDate()) + "'"));
     }
 
     @Test
@@ -246,7 +246,7 @@ public class JdbcBaseDAOTest {
         filter.setBeginDate(parseDateTimeString("2022-01-10T15:01:44"));
 
         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
@@ -254,7 +254,7 @@ public class JdbcBaseDAOTest {
         filter.setEndDate(parseDateTimeString("2022-01-15T15:01:44"));
 
         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
@@ -263,8 +263,8 @@ public class JdbcBaseDAOTest {
         filter.setEndDate(parseDateTimeString("2022-01-15T15:01:44"));
 
         String sql = jdbcBaseDAO.resolveTimeFilter(filter, UTC_ZONE_ID);
-        assertThat(sql, is(" WHERE TIME>'" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getBeginDate()) + "'" //
-                + " AND TIME<'" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getEndDate()) + "'"));
+        assertThat(sql, is(" WHERE TIME>='" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getBeginDate()) + "'" //
+                + " AND TIME<='" + JdbcBaseDAO.JDBC_DATE_FORMAT.format(filter.getEndDate()) + "'"));
     }
 
     private ZonedDateTime parseDateTimeString(String dts) {