This is an automated email from the ASF dual-hosted git repository.

amashenkov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new 1bd6475444f IGNITE-25811 Sql. Forbid use of an expression as interval 
string (#6364)
1bd6475444f is described below

commit 1bd6475444f8342f445c02e87d692df76bdc1018
Author: Andrew V. Mashenkov <[email protected]>
AuthorDate: Fri Aug 8 11:44:34 2025 +0300

    IGNITE-25811 Sql. Forbid use of an expression as interval string (#6364)
---
 .../ignite/jdbc/ItJdbcResultSetSelfTest.java       |  32 +-
 .../sql/engine/ItDynamicParameterTest.java         |  52 +-
 .../ignite/internal/sql/engine/ItIntervalTest.java | 202 +++---
 .../internal/sql/engine/ItSqlOperatorsTest.java    |   6 +-
 .../sql/group1/cast/test_cast_bigint.test          |   2 +-
 .../sql/group1/cast/test_cast_decimal.test         |   6 +-
 .../sql/group1/cast/test_cast_float.test           |   2 +-
 .../sql/group1/cast/test_cast_int.test             |   2 +-
 .../sql/group1/cast/test_cast_interval_day.test    |   2 +-
 .../sql/group1/cast/test_cast_interval_year.test   |   2 +-
 .../sql/group1/cast/test_cast_smallint.test        |   2 +-
 .../sql/group1/cast/test_cast_tinyint.test         |   2 +-
 .../group1/function/date/test_extract_month.test   | 750 +--------------------
 .../group1/function/date/test_extract_year.test    | 644 +-----------------
 .../generic/test_in_list_of_single_element.test    |   2 +-
 .../group1/types/date/test_incorrect_dates.test    |   8 +-
 .../group1/types/interval/interval_constants.test  |  54 +-
 .../types/timestamp/test_incorrect_timestamp.test  |  18 +-
 .../timestamp/test_incorrect_timestamp_ltz.test    |  18 +-
 .../sql/engine/prepare/IgniteSqlValidator.java     |   9 +
 .../internal/sql/engine/rex/IgniteRexBuilder.java  |  34 +
 .../sql/engine/planner/CastResolutionTest.java     |   2 +-
 .../src/testFixtures/resources/tpcds/query12.sql   |   2 +-
 .../src/testFixtures/resources/tpcds/query16.sql   |   2 +-
 .../src/testFixtures/resources/tpcds/query20.sql   |   2 +-
 .../src/testFixtures/resources/tpcds/query21.sql   |   4 +-
 .../src/testFixtures/resources/tpcds/query32.sql   |   4 +-
 .../src/testFixtures/resources/tpcds/query37.sql   |   2 +-
 .../src/testFixtures/resources/tpcds/query40.sql   |   4 +-
 .../src/testFixtures/resources/tpcds/query5.sql    |   6 +-
 .../src/testFixtures/resources/tpcds/query72.sql   |   2 +-
 .../src/testFixtures/resources/tpcds/query77.sql   |  12 +-
 .../src/testFixtures/resources/tpcds/query80.sql   |   6 +-
 .../src/testFixtures/resources/tpcds/query82.sql   |   2 +-
 .../src/testFixtures/resources/tpcds/query92.sql   |   4 +-
 .../src/testFixtures/resources/tpcds/query94.sql   |   2 +-
 .../src/testFixtures/resources/tpcds/query95.sql   |   2 +-
 .../src/testFixtures/resources/tpcds/query98.sql   |   2 +-
 38 files changed, 307 insertions(+), 1602 deletions(-)

diff --git 
a/modules/jdbc/src/integrationTest/java/org/apache/ignite/jdbc/ItJdbcResultSetSelfTest.java
 
b/modules/jdbc/src/integrationTest/java/org/apache/ignite/jdbc/ItJdbcResultSetSelfTest.java
index a9c1c85b1ad..318452a6381 100644
--- 
a/modules/jdbc/src/integrationTest/java/org/apache/ignite/jdbc/ItJdbcResultSetSelfTest.java
+++ 
b/modules/jdbc/src/integrationTest/java/org/apache/ignite/jdbc/ItJdbcResultSetSelfTest.java
@@ -100,17 +100,19 @@ public class ItJdbcResultSetSelfTest extends 
AbstractJdbcSelfTest {
 
     @Test
     public void testIntervalResult() throws SQLException {
-        assertEquals(Duration.ofDays(4), eval("INTERVAL 4 DAYS"));
-        assertEquals(Duration.ofSeconds(1), eval("INTERVAL 1 SECONDS"));
-        assertEquals(Duration.ofSeconds(-1), eval("INTERVAL -1 SECONDS"));
-        assertEquals(Duration.ofSeconds(123), eval("INTERVAL 123 SECONDS"));
+        assertEquals(Duration.ofDays(4), eval("INTERVAL '4' DAYS"));
+        assertEquals(Duration.ofSeconds(1), eval("INTERVAL '1' SECONDS"));
+        assertEquals(Duration.ofSeconds(-1), eval("INTERVAL - '1' SECONDS"));
+        assertEquals(Duration.ofSeconds(-1), eval("INTERVAL '-1' SECONDS"));
+        assertEquals(Duration.ofSeconds(123), eval("INTERVAL '123' SECONDS"));
         assertEquals(Duration.ofSeconds(123), eval("INTERVAL '123' 
SECONDS(3)"));
-        assertEquals(Duration.ofMinutes(2), eval("INTERVAL 2 MINUTES"));
-        assertEquals(Duration.ofHours(3), eval("INTERVAL 3 HOURS"));
-        assertEquals(Duration.ofDays(4), eval("INTERVAL 4 DAYS"));
-        assertEquals(Period.ofMonths(5), eval("INTERVAL 5 MONTHS"));
-        assertEquals(Period.ofMonths(-5), eval("INTERVAL -5 MONTHS"));
-        assertEquals(Period.ofYears(6), eval("INTERVAL 6 YEARS"));
+        assertEquals(Duration.ofMinutes(2), eval("INTERVAL '2' MINUTES"));
+        assertEquals(Duration.ofHours(3), eval("INTERVAL '3' HOURS"));
+        assertEquals(Duration.ofDays(4), eval("INTERVAL '4' DAYS"));
+        assertEquals(Period.ofMonths(5), eval("INTERVAL '5' MONTHS"));
+        assertEquals(Period.ofMonths(-5), eval("INTERVAL - '5' MONTHS"));
+        assertEquals(Period.ofMonths(-5), eval("INTERVAL '-5' MONTHS"));
+        assertEquals(Period.ofYears(6), eval("INTERVAL '6' YEARS"));
         assertEquals(Period.of(1, 2, 0), eval("INTERVAL '1-2' YEAR TO MONTH"));
         assertEquals(Duration.ofHours(25), eval("INTERVAL '1 1' DAY TO HOUR"));
         assertEquals(Duration.ofMinutes(62), eval("INTERVAL '1:2' HOUR TO 
MINUTE"));
@@ -123,13 +125,13 @@ public class ItJdbcResultSetSelfTest extends 
AbstractJdbcSelfTest {
 
     @Test
     public void testTemporalArithmetic() throws SQLException {
-        assertEquals(LocalDate.parse("2021-01-02"), eval("DATE '2021-01-01' + 
interval (1) days"));
+        assertEquals(LocalDate.parse("2021-01-02"), eval("DATE '2021-01-01' + 
interval '1' days"));
         assertEquals(Period.ofMonths(2), eval("(DATE '2021-03-01' - DATE 
'2021-01-01') months"));
         assertEquals(Duration.ofHours(24), eval("(DATE '2021-03-02' - DATE 
'2021-03-01') hours"));
-        assertEquals(Duration.ofHours(48), eval("INTERVAL (3) DAYS - INTERVAL 
(1) DAYS"));
-        assertEquals(Period.ofMonths(1), eval("INTERVAL 5 MONTHS - INTERVAL 4 
MONTHS"));
-        assertEquals(Duration.ofSeconds(1), eval("INTERVAL 5 SECONDS - 
INTERVAL 4 SECONDS"));
-        assertEquals(Duration.ofSeconds(10), eval("INTERVAL 5 SECONDS * 2"));
+        assertEquals(Duration.ofHours(48), eval("INTERVAL '3' DAYS - INTERVAL 
'1' DAYS"));
+        assertEquals(Period.ofMonths(1), eval("INTERVAL '5' MONTHS - INTERVAL 
'4' MONTHS"));
+        assertEquals(Duration.ofSeconds(1), eval("INTERVAL '5' SECONDS - 
INTERVAL '4' SECONDS"));
+        assertEquals(Duration.ofSeconds(10), eval("INTERVAL '5' SECONDS * 2"));
     }
 
     private Object eval(String exp) throws SQLException {
diff --git 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDynamicParameterTest.java
 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDynamicParameterTest.java
index 87619ca9ba4..e702d00eb44 100644
--- 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDynamicParameterTest.java
+++ 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDynamicParameterTest.java
@@ -790,13 +790,13 @@ public class ItDynamicParameterTest extends 
BaseSqlIntegrationTest {
                 arguments(ColumnType.DATE, "SELECT ?, ?::VARCHAR",
                         DATE_MAX, DATE_MAX, "9999-12-31"),
 
-                arguments(ColumnType.DATE, "SELECT ? + INTERVAL 86399 SECOND, 
(? + INTERVAL 86399 SECOND)::VARCHAR",
+                arguments(ColumnType.DATE, "SELECT ? + INTERVAL '86399' 
SECOND, (? + INTERVAL '86399' SECOND)::VARCHAR",
                         DATE_MAX, DATE_MAX, "9999-12-31"),
 
                 arguments(ColumnType.DATE, "SELECT ?, ?::VARCHAR",
                         DATE_MIN, DATE_MIN, "0001-01-01"),
 
-                arguments(ColumnType.DATE, "SELECT ? - INTERVAL 86399 SECOND, 
(? - INTERVAL 86399 SECOND)::VARCHAR",
+                arguments(ColumnType.DATE, "SELECT ? - INTERVAL '86399' 
SECOND, (? - INTERVAL '86399' SECOND)::VARCHAR",
                         DATE_MIN, DATE_MIN, "0001-01-01"),
 
                 // TIMESTAMP
@@ -838,39 +838,39 @@ public class ItDynamicParameterTest extends 
BaseSqlIntegrationTest {
         return Stream.of(
                 // DATE
                 arguments(SqlTypeName.DATE, "?", DATE_MAX.plusDays(1)),
-                arguments(SqlTypeName.DATE, "(? + INTERVAL 86400 SECOND)", 
DATE_MAX),
-                arguments(SqlTypeName.DATE, "(? + INTERVAL 1 DAY)", DATE_MAX),
-                arguments(SqlTypeName.DATE, "(? + INTERVAL 1 MONTH)", 
DATE_MAX),
-                arguments(SqlTypeName.DATE, "(? + INTERVAL 1 YEAR)", DATE_MAX),
+                arguments(SqlTypeName.DATE, "(? + INTERVAL '86400' SECOND)", 
DATE_MAX),
+                arguments(SqlTypeName.DATE, "(? + INTERVAL '1' DAY)", 
DATE_MAX),
+                arguments(SqlTypeName.DATE, "(? + INTERVAL '1' MONTH)", 
DATE_MAX),
+                arguments(SqlTypeName.DATE, "(? + INTERVAL '1' YEAR)", 
DATE_MAX),
                 arguments(SqlTypeName.DATE, "?", DATE_MIN.minusDays(1)),
-                arguments(SqlTypeName.DATE, "(? - INTERVAL 86400 SECOND)", 
DATE_MIN),
-                arguments(SqlTypeName.DATE, "(? - INTERVAL 1 DAY)", DATE_MIN),
-                arguments(SqlTypeName.DATE, "(? - INTERVAL 1 MONTH)", 
DATE_MIN),
-                arguments(SqlTypeName.DATE, "(? - INTERVAL 1 YEAR)", DATE_MIN),
+                arguments(SqlTypeName.DATE, "(? - INTERVAL '86400' SECOND)", 
DATE_MIN),
+                arguments(SqlTypeName.DATE, "(? - INTERVAL '1' DAY)", 
DATE_MIN),
+                arguments(SqlTypeName.DATE, "(? - INTERVAL '1' MONTH)", 
DATE_MIN),
+                arguments(SqlTypeName.DATE, "(? - INTERVAL '1' YEAR)", 
DATE_MIN),
 
                 // TIMESTAMP
                 arguments(SqlTypeName.TIMESTAMP, "?", 
DATETIME_MAX.plusNanos(1)),
-                arguments(SqlTypeName.TIMESTAMP, "(? + INTERVAL 1 SECOND)", 
DATETIME_MAX),
-                arguments(SqlTypeName.TIMESTAMP, "(? + INTERVAL 1 DAY)", 
DATETIME_MAX),
-                arguments(SqlTypeName.TIMESTAMP, "(? + INTERVAL 1 MONTH)", 
DATETIME_MAX),
-                arguments(SqlTypeName.TIMESTAMP, "(? + INTERVAL 1 YEAR)", 
DATETIME_MAX),
+                arguments(SqlTypeName.TIMESTAMP, "(? + INTERVAL '1' SECOND)", 
DATETIME_MAX),
+                arguments(SqlTypeName.TIMESTAMP, "(? + INTERVAL '1' DAY)", 
DATETIME_MAX),
+                arguments(SqlTypeName.TIMESTAMP, "(? + INTERVAL '1' MONTH)", 
DATETIME_MAX),
+                arguments(SqlTypeName.TIMESTAMP, "(? + INTERVAL '1' YEAR)", 
DATETIME_MAX),
                 arguments(SqlTypeName.TIMESTAMP, "?", 
DATETIME_MIN.minusNanos(1)),
-                arguments(SqlTypeName.TIMESTAMP, "(? - INTERVAL 1 SECOND)", 
DATETIME_MIN),
-                arguments(SqlTypeName.TIMESTAMP, "(? - INTERVAL 1 DAY)", 
DATETIME_MIN),
-                arguments(SqlTypeName.TIMESTAMP, "(? - INTERVAL 1 MONTH)", 
DATETIME_MIN),
-                arguments(SqlTypeName.TIMESTAMP, "(? - INTERVAL 1 YEAR)", 
DATETIME_MIN),
+                arguments(SqlTypeName.TIMESTAMP, "(? - INTERVAL '1' SECOND)", 
DATETIME_MIN),
+                arguments(SqlTypeName.TIMESTAMP, "(? - INTERVAL '1' DAY)", 
DATETIME_MIN),
+                arguments(SqlTypeName.TIMESTAMP, "(? - INTERVAL '1' MONTH)", 
DATETIME_MIN),
+                arguments(SqlTypeName.TIMESTAMP, "(? - INTERVAL '1' YEAR)", 
DATETIME_MIN),
 
                 // TIMESTAMP WITH LOCAL TIME ZONE
                 arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "?", 
TIMESTAMP_MAX.plusNanos(1)),
-                arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "(? + 
INTERVAL 1 SECOND)", TIMESTAMP_MAX),
-                arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "(? + 
INTERVAL 1 DAY)", TIMESTAMP_MAX),
-                arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "(? + 
INTERVAL 1 MONTH)", TIMESTAMP_MAX),
-                arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "(? + 
INTERVAL 1 YEAR)", TIMESTAMP_MAX),
+                arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "(? + 
INTERVAL '1' SECOND)", TIMESTAMP_MAX),
+                arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "(? + 
INTERVAL '1' DAY)", TIMESTAMP_MAX),
+                arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "(? + 
INTERVAL '1' MONTH)", TIMESTAMP_MAX),
+                arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "(? + 
INTERVAL '1' YEAR)", TIMESTAMP_MAX),
                 arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "?", 
TIMESTAMP_MIN.minusNanos(1)),
-                arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "(? - 
INTERVAL 1 SECOND)", TIMESTAMP_MIN),
-                arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "(? - 
INTERVAL 1 DAY)", TIMESTAMP_MIN),
-                arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "(? - 
INTERVAL 1 MONTH)", TIMESTAMP_MIN),
-                arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "(? - 
INTERVAL 1 YEAR)", TIMESTAMP_MIN)
+                arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "(? - 
INTERVAL '1' SECOND)", TIMESTAMP_MIN),
+                arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "(? - 
INTERVAL '1' DAY)", TIMESTAMP_MIN),
+                arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "(? - 
INTERVAL '1' MONTH)", TIMESTAMP_MIN),
+                arguments(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, "(? - 
INTERVAL '1' YEAR)", TIMESTAMP_MIN)
         );
     }
 
diff --git 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIntervalTest.java
 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIntervalTest.java
index 564a2e372f1..c027af1c067 100644
--- 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIntervalTest.java
+++ 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIntervalTest.java
@@ -149,17 +149,21 @@ public class ItIntervalTest extends 
BaseSqlIntegrationTest {
      */
     @Test
     public void testIntervalResult() {
-        assertEquals(Duration.ofDays(4), eval("INTERVAL 4 DAYS"));
-        assertEquals(Duration.ofSeconds(1), eval("INTERVAL 1 SECONDS"));
-        assertEquals(Duration.ofSeconds(-1), eval("INTERVAL -1 SECONDS"));
-        assertEquals(Duration.ofSeconds(123), eval("INTERVAL 123 SECONDS"));
+        assertEquals(Duration.ofDays(4), eval("INTERVAL '4' DAYS"));
+        assertEquals(Duration.ofSeconds(1), eval("INTERVAL '1' SECONDS"));
+        assertEquals(Duration.ofSeconds(1), eval("INTERVAL - '-1' SECONDS"));
+        assertEquals(Duration.ofSeconds(-1), eval("INTERVAL - '1' SECONDS"));
+        assertEquals(Duration.ofSeconds(-1), eval("INTERVAL '-1' SECONDS"));
+        assertEquals(Duration.ofSeconds(123), eval("INTERVAL '123' SECONDS"));
         assertEquals(Duration.ofSeconds(123), eval("INTERVAL '123' 
SECONDS(3)"));
-        assertEquals(Duration.ofMinutes(2), eval("INTERVAL 2 MINUTES"));
-        assertEquals(Duration.ofHours(3), eval("INTERVAL 3 HOURS"));
-        assertEquals(Duration.ofDays(4), eval("INTERVAL 4 DAYS"));
-        assertEquals(Period.ofMonths(5), eval("INTERVAL 5 MONTHS"));
-        assertEquals(Period.ofMonths(-5), eval("INTERVAL -5 MONTHS"));
-        assertEquals(Period.ofYears(6), eval("INTERVAL 6 YEARS"));
+        assertEquals(Duration.ofMinutes(2), eval("INTERVAL '2' MINUTES"));
+        assertEquals(Duration.ofHours(3), eval("INTERVAL '3' HOURS"));
+        assertEquals(Duration.ofDays(4), eval("INTERVAL '4' DAYS"));
+        assertEquals(Period.ofMonths(5), eval("INTERVAL '5' MONTHS"));
+        assertEquals(Period.ofMonths(5), eval("INTERVAL - '-5' MONTHS"));
+        assertEquals(Period.ofMonths(-5), eval("INTERVAL - '5' MONTHS"));
+        assertEquals(Period.ofMonths(-5), eval("INTERVAL '-5' MONTHS"));
+        assertEquals(Period.ofYears(6), eval("INTERVAL '6' YEARS"));
         assertEquals(Period.of(1, 2, 0), eval("INTERVAL '1-2' YEAR TO MONTH"));
         assertEquals(Duration.ofHours(25), eval("INTERVAL '1 1' DAY TO HOUR"));
         assertEquals(Duration.ofMinutes(62), eval("INTERVAL '1:2' HOUR TO 
MINUTE"));
@@ -173,9 +177,23 @@ public class ItIntervalTest extends BaseSqlIntegrationTest 
{
         // assertEquals(Duration.ofMillis(123987654), eval("INTERVAL 
'123.987654' SECONDS"));
 
         // Interval range overflow
-        assertThrowsSqlException(Sql.RUNTIME_ERR, "INTEGER out of range", () 
-> sql("SELECT INTERVAL 5000000 MONTHS * 1000"));
-        assertThrowsSqlException(Sql.RUNTIME_ERR, "BIGINT out of range", () -> 
sql("SELECT DATE '2021-01-01' + INTERVAL 999999999999 DAY"));
-        assertThrowsSqlException(Sql.RUNTIME_ERR, "INTEGER out of range", () 
-> sql("SELECT DATE '2021-01-01' + INTERVAL -999999999 YEAR"));
+        assertThrowsSqlException(Sql.RUNTIME_ERR, "INTEGER out of range",
+                () -> sql("SELECT INTERVAL '5000000' MONTHS * 1000"));
+        assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, "Failed to validate 
query.",
+                () -> sql("SELECT DATE '2021-01-01' + INTERVAL '999999999999' 
DAY"));
+        assertThrowsSqlException(Sql.RUNTIME_ERR, "DATE out of range",
+                () -> sql("SELECT DATE '2021-01-01' + INTERVAL - '999999999' 
YEAR"));
+
+        // Invalid interval literals format
+        assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, "String literal 
expected", () -> sql("SELECT INTERVAL 1 HOUR"));
+        assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, "String literal 
expected", () -> sql("SELECT INTERVAL 1 YEAR"));
+        assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, "String literal 
expected", () -> sql("SELECT INTERVAL -1 HOUR"));
+        assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, "String literal 
expected", () -> sql("SELECT INTERVAL -1 YEAR"));
+        assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, "String literal 
expected", () -> sql("SELECT INTERVAL 5000000 MONTHS * 1000"));
+        assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, "String literal 
expected",
+                () -> sql("SELECT DATE '2021-01-01' + INTERVAL 999999999999 
DAY"));
+        assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, "String literal 
expected",
+                () -> sql("SELECT DATE '2021-01-01' + INTERVAL -999999999 
YEAR"));
     }
 
     /**
@@ -185,18 +203,18 @@ public class ItIntervalTest extends 
BaseSqlIntegrationTest {
     public void testIntervalIntCast() {
         assertNull(eval("CAST(NULL::INTERVAL SECONDS AS INT)"));
         assertNull(eval("CAST(NULL::INTERVAL MONTHS AS INT)"));
-        assertEquals(1, eval("CAST(INTERVAL 1 SECONDS AS INT)"));
-        assertEquals(2, eval("CAST(INTERVAL 2 MINUTES AS INT)"));
-        assertEquals(3, eval("CAST(INTERVAL 3 HOURS AS INT)"));
-        assertEquals(4, eval("CAST(INTERVAL 4 DAYS AS INT)"));
-        assertEquals(-4, eval("CAST(INTERVAL -4 DAYS AS INT)"));
-        assertEquals(5, eval("CAST(INTERVAL 5 MONTHS AS INT)"));
-        assertEquals(6, eval("CAST(INTERVAL 6 YEARS AS INT)"));
-        assertEquals(-6, eval("CAST(INTERVAL -6 YEARS AS INT)"));
-
-        assertEquals("+6", eval("CAST(INTERVAL 6 YEARS AS VARCHAR)"));
-        assertEquals("+1", eval("CAST(INTERVAL 1 HOUR AS VARCHAR)"));
-        assertEquals("+7.000000", eval("CAST(INTERVAL 7 SECONDS AS VARCHAR)"));
+        assertEquals(1, eval("CAST(INTERVAL '1' SECONDS AS INT)"));
+        assertEquals(2, eval("CAST(INTERVAL '2' MINUTES AS INT)"));
+        assertEquals(3, eval("CAST(INTERVAL '3' HOURS AS INT)"));
+        assertEquals(4, eval("CAST(INTERVAL '4' DAYS AS INT)"));
+        assertEquals(-4, eval("CAST(INTERVAL '-4' DAYS AS INT)"));
+        assertEquals(5, eval("CAST(INTERVAL '5' MONTHS AS INT)"));
+        assertEquals(6, eval("CAST(INTERVAL '6' YEARS AS INT)"));
+        assertEquals(-6, eval("CAST(INTERVAL - '6' YEARS AS INT)"));
+
+        assertEquals("+6", eval("CAST(INTERVAL '6' YEARS AS VARCHAR)"));
+        assertEquals("+1", eval("CAST(INTERVAL '1' HOUR AS VARCHAR)"));
+        assertEquals("+7.000000", eval("CAST(INTERVAL '7' SECONDS AS 
VARCHAR)"));
 
         assertNull(eval("CAST(NULL::INT AS INTERVAL SECONDS)"));
         assertNull(eval("CAST(NULL::INT AS INTERVAL MONTHS)"));
@@ -223,12 +241,12 @@ public class ItIntervalTest extends 
BaseSqlIntegrationTest {
         assertNull(eval("CAST(NULL::INTERVAL SECONDS AS VARCHAR)"));
         assertNull(eval("CAST(NULL::INTERVAL MONTHS AS VARCHAR)"));
         assertEquals("+1.234", eval("CAST(INTERVAL '1.234' SECONDS (1,3) AS 
VARCHAR)"));
-        assertEquals("+1.000000", eval("CAST(INTERVAL 1 SECONDS AS VARCHAR)"));
-        assertEquals("+2", eval("CAST(INTERVAL 2 MINUTES AS VARCHAR)"));
-        assertEquals("+3", eval("CAST(INTERVAL 3 HOURS AS VARCHAR)"));
-        assertEquals("+4", eval("CAST(INTERVAL 4 DAYS AS VARCHAR)"));
-        assertEquals("+5", eval("CAST(INTERVAL 5 MONTHS AS VARCHAR)"));
-        assertEquals("+6", eval("CAST(INTERVAL 6 YEARS AS VARCHAR)"));
+        assertEquals("+1.000000", eval("CAST(INTERVAL '1' SECONDS AS 
VARCHAR)"));
+        assertEquals("+2", eval("CAST(INTERVAL '2' MINUTES AS VARCHAR)"));
+        assertEquals("+3", eval("CAST(INTERVAL '3' HOURS AS VARCHAR)"));
+        assertEquals("+4", eval("CAST(INTERVAL '4' DAYS AS VARCHAR)"));
+        assertEquals("+5", eval("CAST(INTERVAL '5' MONTHS AS VARCHAR)"));
+        assertEquals("+6", eval("CAST(INTERVAL '6' YEARS AS VARCHAR)"));
         assertEquals("+1-02", eval("CAST(INTERVAL '1-2' YEAR TO MONTH AS 
VARCHAR)"));
         assertEquals("+1 02", eval("CAST(INTERVAL '1 2' DAY TO HOUR AS 
VARCHAR)"));
         assertEquals("-1 02:03:04.000000", eval("CAST(INTERVAL '-1 2:3:4' DAY 
TO SECOND AS VARCHAR)"));
@@ -255,15 +273,15 @@ public class ItIntervalTest extends 
BaseSqlIntegrationTest {
     public void testIntervalToIntervalCast() {
         assertNull(eval("CAST(NULL::INTERVAL MINUTE AS INTERVAL SECONDS)"));
         assertNull(eval("CAST(NULL::INTERVAL YEAR AS INTERVAL MONTHS)"));
-        assertEquals(Duration.ofMinutes(1), eval("CAST(INTERVAL 60 SECONDS AS 
INTERVAL MINUTE)"));
-        assertEquals(Duration.ofHours(1), eval("CAST(INTERVAL 60 MINUTES AS 
INTERVAL HOUR)"));
-        assertEquals(Duration.ofDays(1), eval("CAST(INTERVAL 24 HOURS AS 
INTERVAL DAY)"));
-        assertEquals(Period.ofYears(1), eval("CAST(INTERVAL 1 YEAR AS INTERVAL 
MONTHS)"));
-        assertEquals(Period.ofYears(1), eval("CAST(INTERVAL 12 MONTHS AS 
INTERVAL YEARS)"));
+        assertEquals(Duration.ofMinutes(1), eval("CAST(INTERVAL '60' SECONDS 
AS INTERVAL MINUTE)"));
+        assertEquals(Duration.ofHours(1), eval("CAST(INTERVAL '60' MINUTES AS 
INTERVAL HOUR)"));
+        assertEquals(Duration.ofDays(1), eval("CAST(INTERVAL '24' HOURS AS 
INTERVAL DAY)"));
+        assertEquals(Period.ofYears(1), eval("CAST(INTERVAL '1' YEAR AS 
INTERVAL MONTHS)"));
+        assertEquals(Period.ofYears(1), eval("CAST(INTERVAL '12' MONTHS AS 
INTERVAL YEARS)"));
 
         // Cannot convert between month-year and day-time interval types.
-        assertThrowsEx("SELECT CAST(INTERVAL 1 MONTHS AS INTERVAL DAYS)", 
IgniteException.class, "cannot convert");
-        assertThrowsEx("SELECT CAST(INTERVAL 1 DAYS AS INTERVAL MONTHS)", 
IgniteException.class, "cannot convert");
+        assertThrowsEx("SELECT CAST(INTERVAL '1' MONTHS AS INTERVAL DAYS)", 
IgniteException.class, "cannot convert");
+        assertThrowsEx("SELECT CAST(INTERVAL '1' DAYS AS INTERVAL MONTHS)", 
IgniteException.class, "cannot convert");
     }
 
     /**
@@ -273,15 +291,15 @@ public class ItIntervalTest extends 
BaseSqlIntegrationTest {
     @Test
     public void testDml() {
         sql("CREATE TABLE test(id int PRIMARY KEY, ym INTERVAL YEAR, dt 
INTERVAL DAYS)");
-        sql("INSERT INTO test VALUES (1, INTERVAL 1 MONTH, INTERVAL 2 DAYS)");
-        sql("INSERT INTO test VALUES (2, INTERVAL 3 YEARS, INTERVAL 4 HOURS)");
+        sql("INSERT INTO test VALUES (1, INTERVAL '1' MONTH, INTERVAL 2 
DAYS)");
+        sql("INSERT INTO test VALUES (2, INTERVAL '3' YEARS, INTERVAL 4 
HOURS)");
         sql("INSERT INTO test VALUES (3, INTERVAL '4-5' YEARS TO MONTHS, 
INTERVAL '6:7' HOURS TO MINUTES)");
         sql("INSERT INTO test VALUES (4, NULL, NULL)");
 
-        assertThrowsEx("INSERT INTO test VALUES (5, INTERVAL 1 DAYS, INTERVAL 
1 HOURS)", IgniteInternalException.class,
+        assertThrowsEx("INSERT INTO test VALUES (5, INTERVAL '1' DAYS, 
INTERVAL '1' HOURS)", IgniteInternalException.class,
                 "cannot assign");
 
-        assertThrowsEx("INSERT INTO test VALUES (6, INTERVAL 1 YEARS, INTERVAL 
1 MONTHS)", IgniteInternalException.class,
+        assertThrowsEx("INSERT INTO test VALUES (6, INTERVAL '1' YEARS, 
INTERVAL '1' MONTHS)", IgniteInternalException.class,
                 "cannot assign");
 
         assertQuery("SELECT ym, dt FROM test")
@@ -291,18 +309,18 @@ public class ItIntervalTest extends 
BaseSqlIntegrationTest {
                 .returns(null, null)
                 .check();
 
-        assertThrowsEx("SELECT * FROM test WHERE ym = INTERVAL 6 DAYS", 
IgniteInternalException.class, "Cannot apply");
-        assertThrowsEx("SELECT * FROM test WHERE dt = INTERVAL 6 YEARS", 
IgniteInternalException.class, "Cannot apply");
+        assertThrowsEx("SELECT * FROM test WHERE ym = INTERVAL '6' DAYS", 
IgniteInternalException.class, "Cannot apply");
+        assertThrowsEx("SELECT * FROM test WHERE dt = INTERVAL '6' YEARS", 
IgniteInternalException.class, "Cannot apply");
 
-        sql("UPDATE test SET dt = INTERVAL 3 DAYS WHERE ym = INTERVAL 1 
MONTH");
-        sql("UPDATE test SET ym = INTERVAL 5 YEARS WHERE dt = INTERVAL 4 
HOURS");
+        sql("UPDATE test SET dt = INTERVAL '3' DAYS WHERE ym = INTERVAL '1' 
MONTH");
+        sql("UPDATE test SET ym = INTERVAL '5' YEARS WHERE dt = INTERVAL '4' 
HOURS");
         sql("UPDATE test SET ym = INTERVAL '6-7' YEARS TO MONTHS, dt = 
INTERVAL '8 9' DAYS TO HOURS "
                 + "WHERE ym = INTERVAL '4-5' YEARS TO MONTHS AND dt = INTERVAL 
'6:7' HOURS TO MINUTES");
 
-        assertThrowsEx("UPDATE test SET dt = INTERVAL 5 YEARS WHERE ym = 
INTERVAL 1 MONTH", IgniteInternalException.class,
+        assertThrowsEx("UPDATE test SET dt = INTERVAL '5' YEARS WHERE ym = 
INTERVAL '1' MONTH", IgniteInternalException.class,
                 "Cannot assign");
 
-        assertThrowsEx("UPDATE test SET ym = INTERVAL 8 YEARS WHERE dt = 
INTERVAL 1 MONTH", IgniteInternalException.class,
+        assertThrowsEx("UPDATE test SET ym = INTERVAL '8' YEARS WHERE dt = 
INTERVAL '1' MONTH", IgniteInternalException.class,
                 "Cannot apply");
 
         assertQuery("SELECT * FROM test")
@@ -315,8 +333,8 @@ public class ItIntervalTest extends BaseSqlIntegrationTest {
         assertThrowsEx("DELETE FROM test WHERE ym = INTERVAL 6 DAYS", 
IgniteInternalException.class, "cannot apply");
         assertThrowsEx("DELETE FROM test WHERE dt = INTERVAL 6 YEARS", 
IgniteInternalException.class, "cannot apply");
 
-        sql("DELETE FROM test WHERE ym = INTERVAL 1 MONTH");
-        sql("DELETE FROM test WHERE dt = INTERVAL 4 HOURS");
+        sql("DELETE FROM test WHERE ym = INTERVAL '1' MONTH");
+        sql("DELETE FROM test WHERE dt = INTERVAL '4' HOURS");
         sql("DELETE FROM test WHERE ym = INTERVAL '6-7' YEARS TO MONTHS AND dt 
= INTERVAL '8 9' DAYS TO HOURS");
         sql("DELETE FROM test WHERE ym IS NULL AND dt IS NULL");
 
@@ -324,8 +342,8 @@ public class ItIntervalTest extends BaseSqlIntegrationTest {
 
         sql("ALTER TABLE test ADD (ym2 INTERVAL MONTH, dt2 INTERVAL HOURS)");
 
-        sql("INSERT INTO test(id, ym, ym2, dt, dt2) VALUES (7, INTERVAL 1 
YEAR, INTERVAL 2 YEARS, "
-                + "INTERVAL 1 SECOND, INTERVAL 2 MINUTES)");
+        sql("INSERT INTO test(id, ym, ym2, dt, dt2) VALUES (7, INTERVAL '1' 
YEAR, INTERVAL 2 YEARS, "
+                + "INTERVAL '1' SECOND, INTERVAL 2 MINUTES)");
 
         assertQuery("SELECT ym, ym2, dt, dt2 FROM test")
                 .returns(Period.ofYears(1), Period.ofYears(2), 
Duration.ofSeconds(1), Duration.ofMinutes(2))
@@ -466,7 +484,7 @@ public class ItIntervalTest extends BaseSqlIntegrationTest {
     @Test
     public void testDateTimeIntervalArithmetic() {
         // Date +/- interval.
-        assertEquals(LocalDate.parse("2020-12-31"), eval("DATE '2021-01-01' + 
INTERVAL -1 DAY"));
+        assertEquals(LocalDate.parse("2020-12-31"), eval("DATE '2021-01-01' + 
INTERVAL '-1' DAY"));
         assertEquals(LocalDate.parse("2022-02-01"), eval("DATE '2021-01-01' + 
INTERVAL '1-1' YEAR TO MONTH"));
 
         // Date - date as interval.
@@ -520,11 +538,11 @@ public class ItIntervalTest extends 
BaseSqlIntegrationTest {
         ZoneId zoneId = ZoneId.systemDefault();
         String tzSuffix = sqlTypeName == 
SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE ? ' ' + zoneId.getId() : "";
 
-        assertQuery(format("SELECT ({} '2021-11-06 02:30:00' + interval (23) 
hours)::varchar", typeName))
+        assertQuery(format("SELECT ({} '2021-11-06 02:30:00' + interval '23' 
hours)::varchar", typeName))
                 .withTimeZoneId(zoneId)
                 .returns("2021-11-07 01:30:00" + tzSuffix).check();
 
-        assertQuery(format("SELECT ({} '2021-11-06 01:30:00' + interval (24) 
hours)::varchar", typeName))
+        assertQuery(format("SELECT ({} '2021-11-06 01:30:00' + interval '24' 
hours)::varchar", typeName))
                 .withTimeZoneId(zoneId)
                 .returns("2021-11-07 01:30:00" + tzSuffix).check();
 
@@ -1013,30 +1031,30 @@ public class ItIntervalTest extends 
BaseSqlIntegrationTest {
     @Test
     public void testIntervalArithmetic() {
         // Interval +/- interval.
-        assertEquals(Duration.ofSeconds(2), eval("INTERVAL 1 SECONDS + 
INTERVAL 1 SECONDS"));
-        assertEquals(Duration.ofSeconds(1), eval("INTERVAL 2 SECONDS - 
INTERVAL 1 SECONDS"));
-        assertEquals(Duration.ofSeconds(61), eval("INTERVAL 1 MINUTE + 
INTERVAL 1 SECONDS"));
-        assertEquals(Duration.ofSeconds(59), eval("INTERVAL 1 MINUTE - 
INTERVAL 1 SECONDS"));
-        assertEquals(Duration.ofSeconds(59), eval("INTERVAL 1 MINUTE + 
INTERVAL -1 SECONDS"));
-        assertEquals(Duration.ofSeconds(3723), eval("INTERVAL 1 HOUR + 
INTERVAL '2:3' MINUTE TO SECONDS"));
-        assertEquals(Duration.ofSeconds(3477), eval("INTERVAL 1 HOUR - 
INTERVAL '2:3' MINUTE TO SECONDS"));
-        assertEquals(Duration.ofHours(25), eval("INTERVAL 1 DAY + INTERVAL 1 
HOUR"));
-        assertEquals(Period.ofMonths(2), eval("INTERVAL 1 MONTH + INTERVAL 1 
MONTH"));
-        assertEquals(Period.ofYears(2), eval("INTERVAL 1 YEAR + INTERVAL 1 
YEAR"));
-        assertEquals(Period.of(1, 1, 0), eval("INTERVAL 1 YEAR + INTERVAL 1 
MONTH"));
-        assertEquals(Period.ofMonths(11), eval("INTERVAL 1 YEAR - INTERVAL 1 
MONTH"));
-        assertEquals(Period.ofMonths(11), eval("INTERVAL 1 YEAR + INTERVAL -1 
MONTH"));
-        assertThrowsEx("SELECT INTERVAL 1 DAY + INTERVAL 1 MONTH", 
IgniteException.class, "Cannot apply");
+        assertEquals(Duration.ofSeconds(2), eval("INTERVAL '1' SECONDS + 
INTERVAL '1' SECONDS"));
+        assertEquals(Duration.ofSeconds(1), eval("INTERVAL '2' SECONDS - 
INTERVAL '1' SECONDS"));
+        assertEquals(Duration.ofSeconds(61), eval("INTERVAL '1' MINUTE + 
INTERVAL '1' SECONDS"));
+        assertEquals(Duration.ofSeconds(59), eval("INTERVAL '1' MINUTE - 
INTERVAL '1' SECONDS"));
+        assertEquals(Duration.ofSeconds(59), eval("INTERVAL '1' MINUTE + 
INTERVAL '-1' SECONDS"));
+        assertEquals(Duration.ofSeconds(3723), eval("INTERVAL '1' HOUR + 
INTERVAL '2:3' MINUTE TO SECONDS"));
+        assertEquals(Duration.ofSeconds(3477), eval("INTERVAL '1' HOUR - 
INTERVAL '2:3' MINUTE TO SECONDS"));
+        assertEquals(Duration.ofHours(25), eval("INTERVAL '1' DAY + INTERVAL 
'1 'HOUR"));
+        assertEquals(Period.ofMonths(2), eval("INTERVAL '1' MONTH + INTERVAL 
'1' MONTH"));
+        assertEquals(Period.ofYears(2), eval("INTERVAL '1' YEAR + INTERVAL '1' 
YEAR"));
+        assertEquals(Period.of(1, 1, 0), eval("INTERVAL '1' YEAR + INTERVAL 
'1' MONTH"));
+        assertEquals(Period.ofMonths(11), eval("INTERVAL '1' YEAR - INTERVAL 
'1' MONTH"));
+        assertEquals(Period.ofMonths(11), eval("INTERVAL '1' YEAR + INTERVAL 
'-1' MONTH"));
+        assertThrowsEx("SELECT INTERVAL '1' DAY + INTERVAL '1' MONTH", 
IgniteException.class, "Cannot apply");
 
         // Interval * scalar.
-        assertEquals(Duration.ofSeconds(2), eval("INTERVAL 1 SECONDS * 2"));
-        assertEquals(Duration.ofSeconds(-2), eval("INTERVAL -1 SECONDS * 2"));
-        assertEquals(Duration.ofMinutes(4), eval("INTERVAL 2 MINUTES * 2"));
-        assertEquals(Duration.ofHours(6), eval("INTERVAL 3 HOURS * 2"));
-        assertEquals(Duration.ofDays(8), eval("INTERVAL 4 DAYS * 2"));
-        assertEquals(Period.ofMonths(10), eval("INTERVAL 5 MONTHS * 2"));
-        assertEquals(Period.ofMonths(-10), eval("INTERVAL -5 MONTHS * 2"));
-        assertEquals(Period.ofYears(12), eval("INTERVAL 6 YEARS * 2"));
+        assertEquals(Duration.ofSeconds(2), eval("INTERVAL '1' SECONDS * 2"));
+        assertEquals(Duration.ofSeconds(-2), eval("INTERVAL '-1' SECONDS * 
2"));
+        assertEquals(Duration.ofMinutes(4), eval("INTERVAL '2' MINUTES * 2"));
+        assertEquals(Duration.ofHours(6), eval("INTERVAL '3' HOURS * 2"));
+        assertEquals(Duration.ofDays(8), eval("INTERVAL '4' DAYS * 2"));
+        assertEquals(Period.ofMonths(10), eval("INTERVAL '5' MONTHS * 2"));
+        assertEquals(Period.ofMonths(-10), eval("INTERVAL '-5' MONTHS * 2"));
+        assertEquals(Period.ofYears(12), eval("INTERVAL '6' YEARS * 2"));
         assertEquals(Period.of(2, 4, 0), eval("INTERVAL '1-2' YEAR TO MONTH * 
2"));
         assertEquals(Duration.ofHours(50), eval("INTERVAL '1 1' DAY TO HOUR * 
2"));
         assertEquals(Duration.ofMinutes(124), eval("INTERVAL '1:2' HOUR TO 
MINUTE * 2"));
@@ -1045,14 +1063,14 @@ public class ItIntervalTest extends 
BaseSqlIntegrationTest {
         assertEquals(Duration.ofMillis(7446912), eval("INTERVAL '0 1:2:3.456' 
DAY TO SECOND * 2"));
 
         // Interval / scalar
-        assertEquals(Duration.ofSeconds(1), eval("INTERVAL 2 SECONDS / 2"));
-        assertEquals(Duration.ofSeconds(-1), eval("INTERVAL -2 SECONDS / 2"));
-        assertEquals(Duration.ofSeconds(30), eval("INTERVAL 1 MINUTES / 2"));
-        assertEquals(Duration.ofMinutes(90), eval("INTERVAL 3 HOURS / 2"));
-        assertEquals(Duration.ofDays(2), eval("INTERVAL 4 DAYS / 2"));
-        assertEquals(Period.ofMonths(2), eval("INTERVAL 5 MONTHS / 2"));
-        assertEquals(Period.ofMonths(-2), eval("INTERVAL -5 MONTHS / 2"));
-        assertEquals(Period.of(3, 6, 0), eval("INTERVAL 7 YEARS / 2"));
+        assertEquals(Duration.ofSeconds(1), eval("INTERVAL '2' SECONDS / 2"));
+        assertEquals(Duration.ofSeconds(-1), eval("INTERVAL '-2' SECONDS / 
2"));
+        assertEquals(Duration.ofSeconds(30), eval("INTERVAL '1' MINUTES / 2"));
+        assertEquals(Duration.ofMinutes(90), eval("INTERVAL '3' HOURS / 2"));
+        assertEquals(Duration.ofDays(2), eval("INTERVAL '4' DAYS / 2"));
+        assertEquals(Period.ofMonths(2), eval("INTERVAL '5' MONTHS / 2"));
+        assertEquals(Period.ofMonths(-2), eval("INTERVAL '-5' MONTHS / 2"));
+        assertEquals(Period.of(3, 6, 0), eval("INTERVAL '7' YEARS / 2"));
         assertEquals(Period.ofMonths(7), eval("INTERVAL '1-2' YEAR TO MONTH / 
2"));
         assertEquals(Duration.ofHours(13), eval("INTERVAL '1 2' DAY TO HOUR / 
2"));
         assertEquals(Duration.ofMinutes(31), eval("INTERVAL '1:2' HOUR TO 
MINUTE / 2"));
@@ -1066,13 +1084,13 @@ public class ItIntervalTest extends 
BaseSqlIntegrationTest {
      */
     @Test
     public void testExtract() {
-        assertEquals(2L, eval("EXTRACT(MONTH FROM INTERVAL 14 MONTHS)"));
-        assertEquals(0L, eval("EXTRACT(MONTH FROM INTERVAL 1 YEAR)"));
+        assertEquals(2L, eval("EXTRACT(MONTH FROM INTERVAL '14' MONTHS)"));
+        assertEquals(0L, eval("EXTRACT(MONTH FROM INTERVAL '1' YEAR)"));
         assertEquals(2L, eval("EXTRACT(MONTH FROM INTERVAL '1-2' YEAR TO 
MONTH)"));
         assertEquals(1L, eval("EXTRACT(YEAR FROM INTERVAL '1-2' YEAR TO 
MONTH)"));
-        assertEquals(-1L, eval("EXTRACT(MONTH FROM INTERVAL -1 MONTHS)"));
-        assertEquals(-1L, eval("EXTRACT(YEAR FROM INTERVAL -14 MONTHS)"));
-        assertEquals(-2L, eval("EXTRACT(MONTH FROM INTERVAL -14 MONTHS)"));
+        assertEquals(-1L, eval("EXTRACT(MONTH FROM INTERVAL '-1' MONTHS)"));
+        assertEquals(-1L, eval("EXTRACT(YEAR FROM INTERVAL '-14' MONTHS)"));
+        assertEquals(-2L, eval("EXTRACT(MONTH FROM INTERVAL '-14' MONTHS)"));
         assertEquals(-20L, eval("EXTRACT(MINUTE FROM INTERVAL '-10:20' HOURS 
TO MINUTES)"));
         assertEquals(1L, eval("EXTRACT(DAY FROM INTERVAL '1 2:3:4.567' DAY TO 
SECOND)"));
         assertEquals(2L, eval("EXTRACT(HOUR FROM INTERVAL '1 2:3:4.567' DAY TO 
SECOND)"));
@@ -1084,9 +1102,9 @@ public class ItIntervalTest extends 
BaseSqlIntegrationTest {
         assertEquals(-3L, eval("EXTRACT(MINUTE FROM INTERVAL '-1 2:3:4.567' 
DAY TO SECOND)"));
         assertEquals(-4L, eval("EXTRACT(SECOND FROM INTERVAL '-1 2:3:4.567' 
DAY TO SECOND)"));
         assertEquals(-4567L, eval("EXTRACT(MILLISECOND FROM INTERVAL '-1 
2:3:4.567' DAY TO SECOND)"));
-        assertEquals(0L, eval("EXTRACT(DAY FROM INTERVAL 1 MONTH)"));
+        assertEquals(0L, eval("EXTRACT(DAY FROM INTERVAL '1' MONTH)"));
 
-        assertThrowsEx("SELECT EXTRACT(MONTH FROM INTERVAL 1 DAY)", 
IgniteException.class, "Cannot apply");
+        assertThrowsEx("SELECT EXTRACT(MONTH FROM INTERVAL '1' DAY)", 
IgniteException.class, "Cannot apply");
     }
 
     /**
diff --git 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSqlOperatorsTest.java
 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSqlOperatorsTest.java
index 21ed6e5afe1..842b536243c 100644
--- 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSqlOperatorsTest.java
+++ 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSqlOperatorsTest.java
@@ -223,7 +223,7 @@ public class ItSqlOperatorsTest extends 
BaseSqlIntegrationTest {
 
     @Test
     public void testDateAndTime() {
-        assertExpression("DATE '2021-01-01' + interval (1) 
days").returns(LocalDate.parse("2021-01-02")).check();
+        assertExpression("DATE '2021-01-01' + interval '1' 
days").returns(LocalDate.parse("2021-01-02")).check();
         assertExpression("(DATE '2021-03-01' - DATE '2021-01-01') 
months").returns(Period.ofMonths(2)).check();
         assertExpression("(DATE '2021-03-02' - DATE '2021-03-01') 
hours").returns(Duration.ofHours(24)).check();
         assertExpression("EXTRACT(DAY FROM DATE 
'2021-01-15')").returns(15L).check();
@@ -296,8 +296,8 @@ public class ItSqlOperatorsTest extends 
BaseSqlIntegrationTest {
         assertExpression("COMPRESS('')").returns(new byte[]{}).check();
         assertExpression("OCTET_LENGTH(x'01')").returns(1).check();
         assertExpression("OCTET_LENGTH('text')").returns(4).check();
-        assertExpression("CAST(INTERVAL 1 SECONDS AS 
INT)").returns(1).check(); // Converted to REINTERPRED.
-        assertExpression("CAST(INTERVAL 1 DAY AS INT)").returns(1).check(); // 
Converted to REINTERPRED.
+        assertExpression("CAST(INTERVAL '1' SECONDS AS 
INT)").returns(1).check(); // Converted to REINTERPRED.
+        assertExpression("CAST(INTERVAL '1' DAY AS INT)").returns(1).check(); 
// Converted to REINTERPRED.
     }
 
     @Test
diff --git 
a/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_bigint.test 
b/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_bigint.test
index 33e89236136..d3a66c25cb8 100644
--- 
a/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_bigint.test
+++ 
b/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_bigint.test
@@ -65,7 +65,7 @@ SELECT CAST(x'00'::VARBINARY AS BIGINT);
 for interval_type in [YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, YEARS, MONTHS, 
DAYS, HOURS, MINUTES, SECONDS]
 
 query T
-SELECT CAST(INTERVAL 11 ${interval_type} AS BIGINT);
+SELECT CAST(INTERVAL '11' ${interval_type} AS BIGINT);
 ----
 11
 
diff --git 
a/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_decimal.test 
b/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_decimal.test
index a28dbf3b325..708499b03c8 100644
--- 
a/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_decimal.test
+++ 
b/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_decimal.test
@@ -115,7 +115,7 @@ SELECT CAST(x'00'::VARBINARY AS DECIMAL);
 for interval_type in [YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, YEARS, MONTHS, 
DAYS, HOURS, MINUTES, SECONDS]
 
 query T
-SELECT CAST(INTERVAL 11 ${interval_type} AS DECIMAL);
+SELECT CAST(INTERVAL '11' ${interval_type} AS DECIMAL);
 ----
 11
 
@@ -126,7 +126,7 @@ endfor
 for interval_type in [YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, YEARS, MONTHS, 
DAYS, HOURS, MINUTES, SECONDS]
 
 query T
-SELECT CAST(INTERVAL 11 ${interval_type} AS DECIMAL(5,2));
+SELECT CAST(INTERVAL '11' ${interval_type} AS DECIMAL(5,2));
 ----
 11
 
@@ -165,7 +165,7 @@ SELECT CAST(INTERVAL '1-1' YEARS TO MONTHS AS DECIMAL(5));
 for interval_type in [YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, YEARS, MONTHS, 
DAYS, HOURS, MINUTES, SECONDS]
 
 statement error: Numeric field overflow
-SELECT CAST(INTERVAL 11 ${interval_type} AS DECIMAL(1));
+SELECT CAST(INTERVAL '11' ${interval_type} AS DECIMAL(1));
 
 endfor
 
diff --git 
a/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_float.test 
b/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_float.test
index 2b4dcbdc812..b4457187d86 100644
--- 
a/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_float.test
+++ 
b/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_float.test
@@ -80,7 +80,7 @@ SELECT CAST(x'00'::VARBINARY AS FLOAT);
 for interval_type in [YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, YEARS, MONTHS, 
DAYS, HOURS, MINUTES, SECONDS]
 
 statement error: Cast function cannot convert value
-SELECT CAST(INTERVAL 11 ${interval_type} AS FLOAT);
+SELECT CAST(INTERVAL '11' ${interval_type} AS FLOAT);
 
 endfor
 
diff --git 
a/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_int.test 
b/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_int.test
index bb3f94468ca..ad54a004b7a 100644
--- a/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_int.test
+++ b/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_int.test
@@ -65,7 +65,7 @@ SELECT CAST(x'00'::VARBINARY AS INT);
 for interval_type in [YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, YEARS, MONTHS, 
DAYS, HOURS, MINUTES, SECONDS]
 
 query T
-SELECT CAST(INTERVAL 11 ${interval_type} AS INT);
+SELECT CAST(INTERVAL '11' ${interval_type} AS INT);
 ----
 11
 
diff --git 
a/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_interval_day.test
 
b/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_interval_day.test
index 4960bcf60aa..f1d846779c2 100644
--- 
a/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_interval_day.test
+++ 
b/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_interval_day.test
@@ -4,7 +4,7 @@
 # group: [cast]
 
 query T
-SELECT CAST(INTERVAL 1 DAYS AS INTERVAL DAYS);
+SELECT CAST(INTERVAL '1' DAYS AS INTERVAL DAYS);
 ----
 PT24H
 
diff --git 
a/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_interval_year.test
 
b/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_interval_year.test
index bdf16c6c514..456a9345f66 100644
--- 
a/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_interval_year.test
+++ 
b/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_interval_year.test
@@ -4,7 +4,7 @@
 # group: [cast]
 
 query T
-SELECT CAST(INTERVAL 1 YEARS AS INTERVAL YEARS);
+SELECT CAST(INTERVAL '1' YEARS AS INTERVAL YEARS);
 ----
 P1Y
 
diff --git 
a/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_smallint.test
 
b/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_smallint.test
index 59b8e353986..5b2a3d8233d 100644
--- 
a/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_smallint.test
+++ 
b/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_smallint.test
@@ -65,7 +65,7 @@ SELECT CAST(x'00'::VARBINARY AS SMALLINT);
 for interval_type in [YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, YEARS, MONTHS, 
DAYS, HOURS, MINUTES, SECONDS]
 
 query T
-SELECT CAST(INTERVAL 11 ${interval_type} AS SMALLINT);
+SELECT CAST(INTERVAL '11' ${interval_type} AS SMALLINT);
 ----
 11
 
diff --git 
a/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_tinyint.test 
b/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_tinyint.test
index 03c06e0e891..172dc48a030 100644
--- 
a/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_tinyint.test
+++ 
b/modules/sql-engine/src/integrationTest/sql/group1/cast/test_cast_tinyint.test
@@ -65,7 +65,7 @@ SELECT CAST(x'00'::VARBINARY AS TINYINT);
 for interval_type in [YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, YEARS, MONTHS, 
DAYS, HOURS, MINUTES, SECONDS]
 
 query T
-SELECT CAST(INTERVAL 11 ${interval_type} AS TINYINT);
+SELECT CAST(INTERVAL '11' ${interval_type} AS TINYINT);
 ----
 11
 
diff --git 
a/modules/sql-engine/src/integrationTest/sql/group1/function/date/test_extract_month.test
 
b/modules/sql-engine/src/integrationTest/sql/group1/function/date/test_extract_month.test
index e6b02ec7321..e5d8c927115 100644
--- 
a/modules/sql-engine/src/integrationTest/sql/group1/function/date/test_extract_month.test
+++ 
b/modules/sql-engine/src/integrationTest/sql/group1/function/date/test_extract_month.test
@@ -3,746 +3,38 @@
 # group: [date]
 
 query II
-select date '1992-01-01' + interval (18) days, month(date '1992-01-01' + 
interval (18) days);
+select date '1992-01-01' + interval '18' days, month(date '1992-01-01' + 
interval '18' days);
 ----
 1992-01-19     1
 
 query II
-select date '1992-01-01' + interval (x) days, month(date '1992-01-01' + 
interval (x) days) from table(system_range(0, 365));
+select date '1992-01-01' + interval '30' days, month(date '1992-01-01' + 
interval '30' days);
 ----
-1992-01-01     1
-1992-01-02     1
-1992-01-03     1
-1992-01-04     1
-1992-01-05     1
-1992-01-06     1
-1992-01-07     1
-1992-01-08     1
-1992-01-09     1
-1992-01-10     1
-1992-01-11     1
-1992-01-12     1
-1992-01-13     1
-1992-01-14     1
-1992-01-15     1
-1992-01-16     1
-1992-01-17     1
-1992-01-18     1
-1992-01-19     1
-1992-01-20     1
-1992-01-21     1
-1992-01-22     1
-1992-01-23     1
-1992-01-24     1
-1992-01-25     1
-1992-01-26     1
-1992-01-27     1
-1992-01-28     1
-1992-01-29     1
-1992-01-30     1
 1992-01-31     1
+
+query II
+select date '1992-01-01' + interval '31' days, month(date '1992-01-01' + 
interval '31' days);
+----
 1992-02-01     2
-1992-02-02     2
-1992-02-03     2
-1992-02-04     2
-1992-02-05     2
-1992-02-06     2
-1992-02-07     2
-1992-02-08     2
-1992-02-09     2
-1992-02-10     2
-1992-02-11     2
-1992-02-12     2
-1992-02-13     2
-1992-02-14     2
-1992-02-15     2
-1992-02-16     2
-1992-02-17     2
-1992-02-18     2
-1992-02-19     2
-1992-02-20     2
-1992-02-21     2
-1992-02-22     2
-1992-02-23     2
-1992-02-24     2
-1992-02-25     2
-1992-02-26     2
-1992-02-27     2
-1992-02-28     2
+
+# Leap year
+query II
+select date '1992-01-01' + interval '59' days, month(date '1992-01-01' + 
interval '59' days);
+----
 1992-02-29     2
-1992-03-01     3
-1992-03-02     3
-1992-03-03     3
-1992-03-04     3
-1992-03-05     3
-1992-03-06     3
-1992-03-07     3
-1992-03-08     3
-1992-03-09     3
-1992-03-10     3
-1992-03-11     3
-1992-03-12     3
-1992-03-13     3
-1992-03-14     3
-1992-03-15     3
-1992-03-16     3
-1992-03-17     3
-1992-03-18     3
-1992-03-19     3
-1992-03-20     3
-1992-03-21     3
-1992-03-22     3
-1992-03-23     3
-1992-03-24     3
-1992-03-25     3
-1992-03-26     3
-1992-03-27     3
-1992-03-28     3
-1992-03-29     3
-1992-03-30     3
-1992-03-31     3
-1992-04-01     4
-1992-04-02     4
-1992-04-03     4
-1992-04-04     4
-1992-04-05     4
-1992-04-06     4
-1992-04-07     4
-1992-04-08     4
-1992-04-09     4
-1992-04-10     4
-1992-04-11     4
-1992-04-12     4
-1992-04-13     4
-1992-04-14     4
-1992-04-15     4
-1992-04-16     4
-1992-04-17     4
-1992-04-18     4
-1992-04-19     4
-1992-04-20     4
-1992-04-21     4
-1992-04-22     4
-1992-04-23     4
-1992-04-24     4
-1992-04-25     4
-1992-04-26     4
-1992-04-27     4
-1992-04-28     4
-1992-04-29     4
-1992-04-30     4
-1992-05-01     5
-1992-05-02     5
-1992-05-03     5
-1992-05-04     5
-1992-05-05     5
-1992-05-06     5
-1992-05-07     5
-1992-05-08     5
-1992-05-09     5
-1992-05-10     5
-1992-05-11     5
-1992-05-12     5
-1992-05-13     5
-1992-05-14     5
-1992-05-15     5
-1992-05-16     5
-1992-05-17     5
-1992-05-18     5
-1992-05-19     5
-1992-05-20     5
-1992-05-21     5
-1992-05-22     5
-1992-05-23     5
-1992-05-24     5
-1992-05-25     5
-1992-05-26     5
-1992-05-27     5
-1992-05-28     5
-1992-05-29     5
-1992-05-30     5
-1992-05-31     5
-1992-06-01     6
-1992-06-02     6
-1992-06-03     6
-1992-06-04     6
-1992-06-05     6
-1992-06-06     6
-1992-06-07     6
-1992-06-08     6
-1992-06-09     6
-1992-06-10     6
-1992-06-11     6
-1992-06-12     6
-1992-06-13     6
-1992-06-14     6
-1992-06-15     6
-1992-06-16     6
-1992-06-17     6
-1992-06-18     6
-1992-06-19     6
-1992-06-20     6
-1992-06-21     6
-1992-06-22     6
-1992-06-23     6
-1992-06-24     6
-1992-06-25     6
-1992-06-26     6
-1992-06-27     6
-1992-06-28     6
-1992-06-29     6
-1992-06-30     6
-1992-07-01     7
-1992-07-02     7
-1992-07-03     7
-1992-07-04     7
-1992-07-05     7
-1992-07-06     7
-1992-07-07     7
-1992-07-08     7
-1992-07-09     7
-1992-07-10     7
-1992-07-11     7
-1992-07-12     7
-1992-07-13     7
-1992-07-14     7
-1992-07-15     7
-1992-07-16     7
-1992-07-17     7
-1992-07-18     7
-1992-07-19     7
-1992-07-20     7
-1992-07-21     7
-1992-07-22     7
-1992-07-23     7
-1992-07-24     7
-1992-07-25     7
-1992-07-26     7
-1992-07-27     7
-1992-07-28     7
-1992-07-29     7
-1992-07-30     7
-1992-07-31     7
-1992-08-01     8
-1992-08-02     8
-1992-08-03     8
-1992-08-04     8
-1992-08-05     8
-1992-08-06     8
-1992-08-07     8
-1992-08-08     8
-1992-08-09     8
-1992-08-10     8
-1992-08-11     8
-1992-08-12     8
-1992-08-13     8
-1992-08-14     8
-1992-08-15     8
-1992-08-16     8
-1992-08-17     8
-1992-08-18     8
-1992-08-19     8
-1992-08-20     8
-1992-08-21     8
-1992-08-22     8
-1992-08-23     8
-1992-08-24     8
-1992-08-25     8
-1992-08-26     8
-1992-08-27     8
-1992-08-28     8
-1992-08-29     8
-1992-08-30     8
-1992-08-31     8
-1992-09-01     9
-1992-09-02     9
-1992-09-03     9
-1992-09-04     9
-1992-09-05     9
-1992-09-06     9
-1992-09-07     9
-1992-09-08     9
-1992-09-09     9
-1992-09-10     9
-1992-09-11     9
-1992-09-12     9
-1992-09-13     9
-1992-09-14     9
-1992-09-15     9
-1992-09-16     9
-1992-09-17     9
-1992-09-18     9
-1992-09-19     9
-1992-09-20     9
-1992-09-21     9
-1992-09-22     9
-1992-09-23     9
-1992-09-24     9
-1992-09-25     9
-1992-09-26     9
-1992-09-27     9
-1992-09-28     9
-1992-09-29     9
-1992-09-30     9
-1992-10-01     10
-1992-10-02     10
-1992-10-03     10
-1992-10-04     10
-1992-10-05     10
-1992-10-06     10
-1992-10-07     10
-1992-10-08     10
-1992-10-09     10
-1992-10-10     10
-1992-10-11     10
-1992-10-12     10
-1992-10-13     10
-1992-10-14     10
-1992-10-15     10
-1992-10-16     10
-1992-10-17     10
-1992-10-18     10
-1992-10-19     10
-1992-10-20     10
-1992-10-21     10
-1992-10-22     10
-1992-10-23     10
-1992-10-24     10
-1992-10-25     10
-1992-10-26     10
-1992-10-27     10
-1992-10-28     10
-1992-10-29     10
-1992-10-30     10
-1992-10-31     10
-1992-11-01     11
-1992-11-02     11
-1992-11-03     11
-1992-11-04     11
-1992-11-05     11
-1992-11-06     11
-1992-11-07     11
-1992-11-08     11
-1992-11-09     11
-1992-11-10     11
-1992-11-11     11
-1992-11-12     11
-1992-11-13     11
-1992-11-14     11
-1992-11-15     11
-1992-11-16     11
-1992-11-17     11
-1992-11-18     11
-1992-11-19     11
-1992-11-20     11
-1992-11-21     11
-1992-11-22     11
-1992-11-23     11
-1992-11-24     11
-1992-11-25     11
-1992-11-26     11
-1992-11-27     11
-1992-11-28     11
-1992-11-29     11
-1992-11-30     11
-1992-12-01     12
-1992-12-02     12
-1992-12-03     12
-1992-12-04     12
-1992-12-05     12
-1992-12-06     12
-1992-12-07     12
-1992-12-08     12
-1992-12-09     12
-1992-12-10     12
-1992-12-11     12
-1992-12-12     12
-1992-12-13     12
-1992-12-14     12
-1992-12-15     12
-1992-12-16     12
-1992-12-17     12
-1992-12-18     12
-1992-12-19     12
-1992-12-20     12
-1992-12-21     12
-1992-12-22     12
-1992-12-23     12
-1992-12-24     12
-1992-12-25     12
-1992-12-26     12
-1992-12-27     12
-1992-12-28     12
-1992-12-29     12
-1992-12-30     12
+
+query II
+select date '1992-01-01' + interval '365' days, month(date '1992-01-01' + 
interval '365' days);
+----
 1992-12-31     12
 
+# Non-leap year
 query II
-select date '1993-01-01' + interval (x) days, month(date '1993-01-01' + 
interval (x) days) from table(system_range(0, 365));
+select date '1993-01-01' + interval '59' days, month(date '1993-01-01' + 
interval '59' days);
 ----
-1993-01-01     1
-1993-01-02     1
-1993-01-03     1
-1993-01-04     1
-1993-01-05     1
-1993-01-06     1
-1993-01-07     1
-1993-01-08     1
-1993-01-09     1
-1993-01-10     1
-1993-01-11     1
-1993-01-12     1
-1993-01-13     1
-1993-01-14     1
-1993-01-15     1
-1993-01-16     1
-1993-01-17     1
-1993-01-18     1
-1993-01-19     1
-1993-01-20     1
-1993-01-21     1
-1993-01-22     1
-1993-01-23     1
-1993-01-24     1
-1993-01-25     1
-1993-01-26     1
-1993-01-27     1
-1993-01-28     1
-1993-01-29     1
-1993-01-30     1
-1993-01-31     1
-1993-02-01     2
-1993-02-02     2
-1993-02-03     2
-1993-02-04     2
-1993-02-05     2
-1993-02-06     2
-1993-02-07     2
-1993-02-08     2
-1993-02-09     2
-1993-02-10     2
-1993-02-11     2
-1993-02-12     2
-1993-02-13     2
-1993-02-14     2
-1993-02-15     2
-1993-02-16     2
-1993-02-17     2
-1993-02-18     2
-1993-02-19     2
-1993-02-20     2
-1993-02-21     2
-1993-02-22     2
-1993-02-23     2
-1993-02-24     2
-1993-02-25     2
-1993-02-26     2
-1993-02-27     2
-1993-02-28     2
 1993-03-01     3
-1993-03-02     3
-1993-03-03     3
-1993-03-04     3
-1993-03-05     3
-1993-03-06     3
-1993-03-07     3
-1993-03-08     3
-1993-03-09     3
-1993-03-10     3
-1993-03-11     3
-1993-03-12     3
-1993-03-13     3
-1993-03-14     3
-1993-03-15     3
-1993-03-16     3
-1993-03-17     3
-1993-03-18     3
-1993-03-19     3
-1993-03-20     3
-1993-03-21     3
-1993-03-22     3
-1993-03-23     3
-1993-03-24     3
-1993-03-25     3
-1993-03-26     3
-1993-03-27     3
-1993-03-28     3
-1993-03-29     3
-1993-03-30     3
-1993-03-31     3
-1993-04-01     4
-1993-04-02     4
-1993-04-03     4
-1993-04-04     4
-1993-04-05     4
-1993-04-06     4
-1993-04-07     4
-1993-04-08     4
-1993-04-09     4
-1993-04-10     4
-1993-04-11     4
-1993-04-12     4
-1993-04-13     4
-1993-04-14     4
-1993-04-15     4
-1993-04-16     4
-1993-04-17     4
-1993-04-18     4
-1993-04-19     4
-1993-04-20     4
-1993-04-21     4
-1993-04-22     4
-1993-04-23     4
-1993-04-24     4
-1993-04-25     4
-1993-04-26     4
-1993-04-27     4
-1993-04-28     4
-1993-04-29     4
-1993-04-30     4
-1993-05-01     5
-1993-05-02     5
-1993-05-03     5
-1993-05-04     5
-1993-05-05     5
-1993-05-06     5
-1993-05-07     5
-1993-05-08     5
-1993-05-09     5
-1993-05-10     5
-1993-05-11     5
-1993-05-12     5
-1993-05-13     5
-1993-05-14     5
-1993-05-15     5
-1993-05-16     5
-1993-05-17     5
-1993-05-18     5
-1993-05-19     5
-1993-05-20     5
-1993-05-21     5
-1993-05-22     5
-1993-05-23     5
-1993-05-24     5
-1993-05-25     5
-1993-05-26     5
-1993-05-27     5
-1993-05-28     5
-1993-05-29     5
-1993-05-30     5
-1993-05-31     5
-1993-06-01     6
-1993-06-02     6
-1993-06-03     6
-1993-06-04     6
-1993-06-05     6
-1993-06-06     6
-1993-06-07     6
-1993-06-08     6
-1993-06-09     6
-1993-06-10     6
-1993-06-11     6
-1993-06-12     6
-1993-06-13     6
-1993-06-14     6
-1993-06-15     6
-1993-06-16     6
-1993-06-17     6
-1993-06-18     6
-1993-06-19     6
-1993-06-20     6
-1993-06-21     6
-1993-06-22     6
-1993-06-23     6
-1993-06-24     6
-1993-06-25     6
-1993-06-26     6
-1993-06-27     6
-1993-06-28     6
-1993-06-29     6
-1993-06-30     6
-1993-07-01     7
-1993-07-02     7
-1993-07-03     7
-1993-07-04     7
-1993-07-05     7
-1993-07-06     7
-1993-07-07     7
-1993-07-08     7
-1993-07-09     7
-1993-07-10     7
-1993-07-11     7
-1993-07-12     7
-1993-07-13     7
-1993-07-14     7
-1993-07-15     7
-1993-07-16     7
-1993-07-17     7
-1993-07-18     7
-1993-07-19     7
-1993-07-20     7
-1993-07-21     7
-1993-07-22     7
-1993-07-23     7
-1993-07-24     7
-1993-07-25     7
-1993-07-26     7
-1993-07-27     7
-1993-07-28     7
-1993-07-29     7
-1993-07-30     7
-1993-07-31     7
-1993-08-01     8
-1993-08-02     8
-1993-08-03     8
-1993-08-04     8
-1993-08-05     8
-1993-08-06     8
-1993-08-07     8
-1993-08-08     8
-1993-08-09     8
-1993-08-10     8
-1993-08-11     8
-1993-08-12     8
-1993-08-13     8
-1993-08-14     8
-1993-08-15     8
-1993-08-16     8
-1993-08-17     8
-1993-08-18     8
-1993-08-19     8
-1993-08-20     8
-1993-08-21     8
-1993-08-22     8
-1993-08-23     8
-1993-08-24     8
-1993-08-25     8
-1993-08-26     8
-1993-08-27     8
-1993-08-28     8
-1993-08-29     8
-1993-08-30     8
-1993-08-31     8
-1993-09-01     9
-1993-09-02     9
-1993-09-03     9
-1993-09-04     9
-1993-09-05     9
-1993-09-06     9
-1993-09-07     9
-1993-09-08     9
-1993-09-09     9
-1993-09-10     9
-1993-09-11     9
-1993-09-12     9
-1993-09-13     9
-1993-09-14     9
-1993-09-15     9
-1993-09-16     9
-1993-09-17     9
-1993-09-18     9
-1993-09-19     9
-1993-09-20     9
-1993-09-21     9
-1993-09-22     9
-1993-09-23     9
-1993-09-24     9
-1993-09-25     9
-1993-09-26     9
-1993-09-27     9
-1993-09-28     9
-1993-09-29     9
-1993-09-30     9
-1993-10-01     10
-1993-10-02     10
-1993-10-03     10
-1993-10-04     10
-1993-10-05     10
-1993-10-06     10
-1993-10-07     10
-1993-10-08     10
-1993-10-09     10
-1993-10-10     10
-1993-10-11     10
-1993-10-12     10
-1993-10-13     10
-1993-10-14     10
-1993-10-15     10
-1993-10-16     10
-1993-10-17     10
-1993-10-18     10
-1993-10-19     10
-1993-10-20     10
-1993-10-21     10
-1993-10-22     10
-1993-10-23     10
-1993-10-24     10
-1993-10-25     10
-1993-10-26     10
-1993-10-27     10
-1993-10-28     10
-1993-10-29     10
-1993-10-30     10
-1993-10-31     10
-1993-11-01     11
-1993-11-02     11
-1993-11-03     11
-1993-11-04     11
-1993-11-05     11
-1993-11-06     11
-1993-11-07     11
-1993-11-08     11
-1993-11-09     11
-1993-11-10     11
-1993-11-11     11
-1993-11-12     11
-1993-11-13     11
-1993-11-14     11
-1993-11-15     11
-1993-11-16     11
-1993-11-17     11
-1993-11-18     11
-1993-11-19     11
-1993-11-20     11
-1993-11-21     11
-1993-11-22     11
-1993-11-23     11
-1993-11-24     11
-1993-11-25     11
-1993-11-26     11
-1993-11-27     11
-1993-11-28     11
-1993-11-29     11
-1993-11-30     11
-1993-12-01     12
-1993-12-02     12
-1993-12-03     12
-1993-12-04     12
-1993-12-05     12
-1993-12-06     12
-1993-12-07     12
-1993-12-08     12
-1993-12-09     12
-1993-12-10     12
-1993-12-11     12
-1993-12-12     12
-1993-12-13     12
-1993-12-14     12
-1993-12-15     12
-1993-12-16     12
-1993-12-17     12
-1993-12-18     12
-1993-12-19     12
-1993-12-20     12
-1993-12-21     12
-1993-12-22     12
-1993-12-23     12
-1993-12-24     12
-1993-12-25     12
-1993-12-26     12
-1993-12-27     12
-1993-12-28     12
-1993-12-29     12
-1993-12-30     12
-1993-12-31     12
+
+query II
+select date '1993-01-01' + interval '365' days, month(date '1993-01-01' + 
interval '365' days);
+----
 1994-01-01     1
diff --git 
a/modules/sql-engine/src/integrationTest/sql/group1/function/date/test_extract_year.test
 
b/modules/sql-engine/src/integrationTest/sql/group1/function/date/test_extract_year.test
index 40bc3633e80..fff4977a68b 100644
--- 
a/modules/sql-engine/src/integrationTest/sql/group1/function/date/test_extract_year.test
+++ 
b/modules/sql-engine/src/integrationTest/sql/group1/function/date/test_extract_year.test
@@ -2,652 +2,12 @@
 # description: Extract year function
 # group: [date]
 
-statement ok
-CREATE TABLE dates (d DATE);
-
-statement ok
-CREATE TABLE dates2 (d DATE);
-
-statement ok
-INSERT INTO dates SELECT date '1970-01-01' + INTERVAL(x) years AS d from 
table(system_range(0, 429));
-
-statement ok
-INSERT INTO dates2 SELECT date '1970-01-01' + INTERVAL(x * 6) months AS d from 
table(system_range(0, 199));
-
 query I
-SELECT EXTRACT(year FROM d) FROM dates ORDER BY 1
+SELECT EXTRACT(year FROM (date '1970-01-01'));
 ----
 1970
-1971
-1972
-1973
-1974
-1975
-1976
-1977
-1978
-1979
-1980
-1981
-1982
-1983
-1984
-1985
-1986
-1987
-1988
-1989
-1990
-1991
-1992
-1993
-1994
-1995
-1996
-1997
-1998
-1999
-2000
-2001
-2002
-2003
-2004
-2005
-2006
-2007
-2008
-2009
-2010
-2011
-2012
-2013
-2014
-2015
-2016
-2017
-2018
-2019
-2020
-2021
-2022
-2023
-2024
-2025
-2026
-2027
-2028
-2029
-2030
-2031
-2032
-2033
-2034
-2035
-2036
-2037
-2038
-2039
-2040
-2041
-2042
-2043
-2044
-2045
-2046
-2047
-2048
-2049
-2050
-2051
-2052
-2053
-2054
-2055
-2056
-2057
-2058
-2059
-2060
-2061
-2062
-2063
-2064
-2065
-2066
-2067
-2068
-2069
-2070
-2071
-2072
-2073
-2074
-2075
-2076
-2077
-2078
-2079
-2080
-2081
-2082
-2083
-2084
-2085
-2086
-2087
-2088
-2089
-2090
-2091
-2092
-2093
-2094
-2095
-2096
-2097
-2098
-2099
-2100
-2101
-2102
-2103
-2104
-2105
-2106
-2107
-2108
-2109
-2110
-2111
-2112
-2113
-2114
-2115
-2116
-2117
-2118
-2119
-2120
-2121
-2122
-2123
-2124
-2125
-2126
-2127
-2128
-2129
-2130
-2131
-2132
-2133
-2134
-2135
-2136
-2137
-2138
-2139
-2140
-2141
-2142
-2143
-2144
-2145
-2146
-2147
-2148
-2149
-2150
-2151
-2152
-2153
-2154
-2155
-2156
-2157
-2158
-2159
-2160
-2161
-2162
-2163
-2164
-2165
-2166
-2167
-2168
-2169
-2170
-2171
-2172
-2173
-2174
-2175
-2176
-2177
-2178
-2179
-2180
-2181
-2182
-2183
-2184
-2185
-2186
-2187
-2188
-2189
-2190
-2191
-2192
-2193
-2194
-2195
-2196
-2197
-2198
-2199
-2200
-2201
-2202
-2203
-2204
-2205
-2206
-2207
-2208
-2209
-2210
-2211
-2212
-2213
-2214
-2215
-2216
-2217
-2218
-2219
-2220
-2221
-2222
-2223
-2224
-2225
-2226
-2227
-2228
-2229
-2230
-2231
-2232
-2233
-2234
-2235
-2236
-2237
-2238
-2239
-2240
-2241
-2242
-2243
-2244
-2245
-2246
-2247
-2248
-2249
-2250
-2251
-2252
-2253
-2254
-2255
-2256
-2257
-2258
-2259
-2260
-2261
-2262
-2263
-2264
-2265
-2266
-2267
-2268
-2269
-2270
-2271
-2272
-2273
-2274
-2275
-2276
-2277
-2278
-2279
-2280
-2281
-2282
-2283
-2284
-2285
-2286
-2287
-2288
-2289
-2290
-2291
-2292
-2293
-2294
-2295
-2296
-2297
-2298
-2299
-2300
-2301
-2302
-2303
-2304
-2305
-2306
-2307
-2308
-2309
-2310
-2311
-2312
-2313
-2314
-2315
-2316
-2317
-2318
-2319
-2320
-2321
-2322
-2323
-2324
-2325
-2326
-2327
-2328
-2329
-2330
-2331
-2332
-2333
-2334
-2335
-2336
-2337
-2338
-2339
-2340
-2341
-2342
-2343
-2344
-2345
-2346
-2347
-2348
-2349
-2350
-2351
-2352
-2353
-2354
-2355
-2356
-2357
-2358
-2359
-2360
-2361
-2362
-2363
-2364
-2365
-2366
-2367
-2368
-2369
-2370
-2371
-2372
-2373
-2374
-2375
-2376
-2377
-2378
-2379
-2380
-2381
-2382
-2383
-2384
-2385
-2386
-2387
-2388
-2389
-2390
-2391
-2392
-2393
-2394
-2395
-2396
-2397
-2398
-2399
 
 query I
-SELECT EXTRACT(year FROM d) FROM dates2 ORDER BY 1
+SELECT EXTRACT(year FROM (date '1970-01-01' + INTERVAL '5' years));
 ----
-1970
-1970
-1971
-1971
-1972
-1972
-1973
-1973
-1974
-1974
-1975
 1975
-1976
-1976
-1977
-1977
-1978
-1978
-1979
-1979
-1980
-1980
-1981
-1981
-1982
-1982
-1983
-1983
-1984
-1984
-1985
-1985
-1986
-1986
-1987
-1987
-1988
-1988
-1989
-1989
-1990
-1990
-1991
-1991
-1992
-1992
-1993
-1993
-1994
-1994
-1995
-1995
-1996
-1996
-1997
-1997
-1998
-1998
-1999
-1999
-2000
-2000
-2001
-2001
-2002
-2002
-2003
-2003
-2004
-2004
-2005
-2005
-2006
-2006
-2007
-2007
-2008
-2008
-2009
-2009
-2010
-2010
-2011
-2011
-2012
-2012
-2013
-2013
-2014
-2014
-2015
-2015
-2016
-2016
-2017
-2017
-2018
-2018
-2019
-2019
-2020
-2020
-2021
-2021
-2022
-2022
-2023
-2023
-2024
-2024
-2025
-2025
-2026
-2026
-2027
-2027
-2028
-2028
-2029
-2029
-2030
-2030
-2031
-2031
-2032
-2032
-2033
-2033
-2034
-2034
-2035
-2035
-2036
-2036
-2037
-2037
-2038
-2038
-2039
-2039
-2040
-2040
-2041
-2041
-2042
-2042
-2043
-2043
-2044
-2044
-2045
-2045
-2046
-2046
-2047
-2047
-2048
-2048
-2049
-2049
-2050
-2050
-2051
-2051
-2052
-2052
-2053
-2053
-2054
-2054
-2055
-2055
-2056
-2056
-2057
-2057
-2058
-2058
-2059
-2059
-2060
-2060
-2061
-2061
-2062
-2062
-2063
-2063
-2064
-2064
-2065
-2065
-2066
-2066
-2067
-2067
-2068
-2068
-2069
-2069
diff --git 
a/modules/sql-engine/src/integrationTest/sql/group1/function/generic/test_in_list_of_single_element.test
 
b/modules/sql-engine/src/integrationTest/sql/group1/function/generic/test_in_list_of_single_element.test
index 7526b10bc76..9c481b2504b 100644
--- 
a/modules/sql-engine/src/integrationTest/sql/group1/function/generic/test_in_list_of_single_element.test
+++ 
b/modules/sql-engine/src/integrationTest/sql/group1/function/generic/test_in_list_of_single_element.test
@@ -84,7 +84,7 @@ false
 NULL
 
 query T rowsort
-SELECT d IN (d + INTERVAL 1 DAYS) FROM test
+SELECT d IN (d + INTERVAL '1' DAYS) FROM test
 ----
 false
 false
diff --git 
a/modules/sql-engine/src/integrationTest/sql/group1/types/date/test_incorrect_dates.test
 
b/modules/sql-engine/src/integrationTest/sql/group1/types/date/test_incorrect_dates.test
index df927b9a9c2..72c7fbc24a4 100644
--- 
a/modules/sql-engine/src/integrationTest/sql/group1/types/date/test_incorrect_dates.test
+++ 
b/modules/sql-engine/src/integrationTest/sql/group1/types/date/test_incorrect_dates.test
@@ -105,10 +105,10 @@ INSERT INTO dates VALUES (CAST('9999-99-99' AS DATE 
FORMAT 'YYYY-MM-DD'))
 
 # The value is less than the minimum allowed
 statement error: DATE out of range
-INSERT INTO dates VALUES (DATE '0001-01-01' - INTERVAL 1 DAYS)
+INSERT INTO dates VALUES (DATE '0001-01-01' - INTERVAL '1' DAYS)
 
 statement error: DATE out of range
-INSERT INTO dates VALUES ('0001-01-01'::DATE - INTERVAL 1 DAYS)
+INSERT INTO dates VALUES ('0001-01-01'::DATE - INTERVAL '1' DAYS)
 
 statement error: Invalid default value for column 'D'
 CREATE TABLE default_overflow(d DATE DEFAULT '0000-01-01');
@@ -121,10 +121,10 @@ CREATE TABLE default_overflow(d DATE DEFAULT 
'0001-01-00');
 
 # THe value is greater than the maximum allowed
 statement error: DATE out of range
-INSERT INTO dates VALUES (DATE '9999-12-31' + INTERVAL 1 DAYS)
+INSERT INTO dates VALUES (DATE '9999-12-31' + INTERVAL '1' DAYS)
 
 statement error: DATE out of range
-INSERT INTO dates VALUES ('9999-12-31'::DATE + INTERVAL 1 DAYS)
+INSERT INTO dates VALUES ('9999-12-31'::DATE + INTERVAL '1' DAYS)
 
 statement error: DATE out of range
 INSERT INTO dates VALUES (DATE_FROM_UNIX_DATE(2932896 + 1))
diff --git 
a/modules/sql-engine/src/integrationTest/sql/group1/types/interval/interval_constants.test
 
b/modules/sql-engine/src/integrationTest/sql/group1/types/interval/interval_constants.test
index d1ef6c70dd6..57bc412e59c 100644
--- 
a/modules/sql-engine/src/integrationTest/sql/group1/types/interval/interval_constants.test
+++ 
b/modules/sql-engine/src/integrationTest/sql/group1/types/interval/interval_constants.test
@@ -7,73 +7,63 @@ PRAGMA enable_verification
 
 # interval constants with different representations
 query I
-SELECT interval 2 days;
-----
-PT48H
-
-query T
-SELECT interval (2) day;
-----
-PT48H
-
-query T
-SELECT interval (1+1) days;
-----
-PT48H
-
-query T
 SELECT interval '2' days;
 ----
 PT48H
 
 query TTTTTT
-SELECT interval 2 years, interval 2 months, interval 2 days, interval 2 hours, 
interval 2 minutes, interval 2 seconds;
+SELECT interval '2' years, interval '2' months, interval '2' days, interval 
'2' hours, interval '2' minutes, interval '2' seconds;
 ----
 P2Y    P2M     PT48H   PT2H    PT2M    PT2S
 
+# Non-literal interval
+statement error: Failed to validate query.
+SELECT interval ('2') days;
+
+statement error: Expression is not supported: String literal expected
+SELECT interval 2 days;
+
+statement error: Failed to validate query.
+SELECT interval ('1+1') days;
+
+statement error: Expression is not supported: String literal expected
+SELECT interval (1+1) days;
+
 # non-constant expression
-query T
+statement error: Expression is not supported: String literal expected
 SELECT interval (x) day from table(system_range(1, 3));
-----
-PT24H
-PT48H
-PT72H
 
-query T
+statement error: Expression is not supported: String literal expected
 SELECT interval (x + 1) day from table(system_range(1, 3));
-----
-PT48H
-PT72H
-PT96H
 
 # try all the different types
 query TT
-SELECT interval 2 years, interval 2 year;
+SELECT interval '2' years, interval '2' year;
 ----
 P2Y    P2Y
 
 query TT
-SELECT interval 2 months, interval 2 month;
+SELECT interval '2' months, interval '2' month;
 ----
 P2M    P2M
 
 query TT
-SELECT interval 2 days, interval 2 day;
+SELECT interval '2' days, interval '2' day;
 ----
 PT48H  PT48H
 
 query TT
-SELECT interval 2 hours, interval 2 hour;
+SELECT interval '2' hours, interval '2' hour;
 ----
 PT2H   PT2H
 
 query TT
-SELECT interval 2 minutes, interval 2 minute;
+SELECT interval '2' minutes, interval '2' minute;
 ----
 PT2M   PT2M
 
 query TT
-SELECT interval 2 seconds, interval 2 second;
+SELECT interval '2' seconds, interval '2' second;
 ----
 PT2S   PT2S
 
diff --git 
a/modules/sql-engine/src/integrationTest/sql/group1/types/timestamp/test_incorrect_timestamp.test
 
b/modules/sql-engine/src/integrationTest/sql/group1/types/timestamp/test_incorrect_timestamp.test
index 3f7823f0528..a3710d7cca0 100644
--- 
a/modules/sql-engine/src/integrationTest/sql/group1/types/timestamp/test_incorrect_timestamp.test
+++ 
b/modules/sql-engine/src/integrationTest/sql/group1/types/timestamp/test_incorrect_timestamp.test
@@ -124,7 +124,7 @@ CREATE TABLE default_overflow(ts TIMESTAMP DEFAULT 
'10002-01-01 00:00:00');
 
 # The value is less than the minimum allowed
 statement error: TIMESTAMP out of range
-INSERT INTO timestamp_t VALUES (TIMESTAMP '0001-01-01 18:00:00' - INTERVAL 1 
SECONDS)
+INSERT INTO timestamp_t VALUES (TIMESTAMP '0001-01-01 18:00:00' - INTERVAL '1' 
SECONDS)
 
 statement error: TIMESTAMP out of range
 INSERT INTO timestamp_t VALUES TIMESTAMPADD(SECOND, -1, TIMESTAMP '0001-01-01 
18:00:00')
@@ -139,11 +139,11 @@ statement error: Invalid default value for column 'TS'
 CREATE TABLE default_overflow(ts TIMESTAMP DEFAULT '0001-01-01 
17:59:59.999999999');
 
 statement error: TIMESTAMP out of range
-INSERT INTO timestamp_t VALUES (LOCALTIMESTAMP - INTERVAL 7999 YEARS)
+INSERT INTO timestamp_t VALUES (LOCALTIMESTAMP - INTERVAL '7999' YEARS)
 
 # The value is greater than the maximum allowed
 statement error: TIMESTAMP out of range
-INSERT INTO timestamp_t VALUES (TIMESTAMP '9999-12-31 05:59:59' + INTERVAL 1 
SECONDS)
+INSERT INTO timestamp_t VALUES (TIMESTAMP '9999-12-31 05:59:59' + INTERVAL '1' 
SECONDS)
 
 statement error: TIMESTAMP out of range
 INSERT INTO timestamp_t VALUES TIMESTAMPADD(SECOND, 1, TIMESTAMP '9999-12-31 
05:59:59')
@@ -158,19 +158,19 @@ statement error: Invalid default value for column 'TS'
 CREATE TABLE default_overflow(ts TIMESTAMP DEFAULT '9999-12-31 06:00:00');
 
 statement error: TIMESTAMP out of range
-INSERT INTO timestamp_t VALUES (TIMESTAMP '2000-01-01 00:00:00' + INTERVAL 
2922000 DAYS)
+INSERT INTO timestamp_t VALUES (TIMESTAMP '2000-01-01 00:00:00' + INTERVAL 
'2922000' DAYS)
 
 statement error: TIMESTAMP out of range
-INSERT INTO timestamp_t VALUES (TIMESTAMP '2000-01-01 00:00:00' - INTERVAL 
730500 DAYS)
+INSERT INTO timestamp_t VALUES (TIMESTAMP '2000-01-01 00:00:00' - INTERVAL 
'730500' DAYS)
 
 statement error: TIMESTAMP out of range
-INSERT INTO timestamp_t VALUES (TIMESTAMP '2000-01-01 00:00:00' + INTERVAL 
70128000 HOURS)
+INSERT INTO timestamp_t VALUES (TIMESTAMP '2000-01-01 00:00:00' + INTERVAL 
'70128000' HOURS)
 
 statement error: TIMESTAMP out of range
-INSERT INTO timestamp_t VALUES (TIMESTAMP '2000-01-01 00:00:00' - INTERVAL 
17532000 HOURS)
+INSERT INTO timestamp_t VALUES (TIMESTAMP '2000-01-01 00:00:00' - INTERVAL 
'17532000' HOURS)
 
 statement error: TIMESTAMP out of range
-INSERT INTO timestamp_t VALUES (LOCALTIMESTAMP + INTERVAL 7999 YEARS)
+INSERT INTO timestamp_t VALUES (LOCALTIMESTAMP + INTERVAL '7999' YEARS)
 
 statement error: TIMESTAMP out of range
-INSERT INTO timestamp_t VALUES (LOCALTIMESTAMP - INTERVAL 7999 YEARS)
+INSERT INTO timestamp_t VALUES (LOCALTIMESTAMP - INTERVAL '7999' YEARS)
diff --git 
a/modules/sql-engine/src/integrationTest/sql/group1/types/timestamp/test_incorrect_timestamp_ltz.test
 
b/modules/sql-engine/src/integrationTest/sql/group1/types/timestamp/test_incorrect_timestamp_ltz.test
index f6cc4b7a2e7..f08569af69a 100644
--- 
a/modules/sql-engine/src/integrationTest/sql/group1/types/timestamp/test_incorrect_timestamp_ltz.test
+++ 
b/modules/sql-engine/src/integrationTest/sql/group1/types/timestamp/test_incorrect_timestamp_ltz.test
@@ -118,7 +118,7 @@ PRAGMA time_zone=UTC
 
 # The value is less than the minimum allowed
 statement error: TIMESTAMP_WITH_LOCAL_TIME_ZONE out of range
-INSERT INTO timestamp_t VALUES (TIMESTAMP WITH LOCAL TIME ZONE '0001-01-01 
18:00:00' - INTERVAL 1 SECONDS)
+INSERT INTO timestamp_t VALUES (TIMESTAMP WITH LOCAL TIME ZONE '0001-01-01 
18:00:00' - INTERVAL '1' SECONDS)
 
 statement error: TIMESTAMP_WITH_LOCAL_TIME_ZONE out of range
 INSERT INTO timestamp_t VALUES TIMESTAMPADD(SECOND, -1, TIMESTAMP WITH LOCAL 
TIME ZONE '0001-01-01 18:00:00')
@@ -135,11 +135,11 @@ statement error: Invalid default value for column 'TS'
 CREATE TABLE default_overflow(ts TIMESTAMP WITH LOCAL TIME ZONE DEFAULT 
'0001-01-01 17:59:59.999999999');
 
 statement error: TIMESTAMP_WITH_LOCAL_TIME_ZONE out of range
-INSERT INTO timestamp_t VALUES (CURRENT_TIMESTAMP - INTERVAL 7999 YEARS)
+INSERT INTO timestamp_t VALUES (CURRENT_TIMESTAMP - INTERVAL '7999' YEARS)
 
 # The value is greater than the maximum allowed
 statement error: TIMESTAMP_WITH_LOCAL_TIME_ZONE out of range
-INSERT INTO timestamp_t VALUES (TIMESTAMP WITH LOCAL TIME ZONE '9999-12-31 
05:59:59' + INTERVAL 1 SECONDS)
+INSERT INTO timestamp_t VALUES (TIMESTAMP WITH LOCAL TIME ZONE '9999-12-31 
05:59:59' + INTERVAL '1' SECONDS)
 
 statement error: TIMESTAMP_WITH_LOCAL_TIME_ZONE out of range
 INSERT INTO timestamp_t VALUES TIMESTAMPADD(SECOND, 1, TIMESTAMP WITH LOCAL 
TIME ZONE '9999-12-31 05:59:59')
@@ -151,16 +151,16 @@ statement error: TIMESTAMP_WITH_LOCAL_TIME_ZONE out of 
range
 INSERT INTO timestamp_t VALUES (TIMESTAMP WITH LOCAL TIME ZONE '9999-12-31 
06:00:00')
 
 statement error: TIMESTAMP_WITH_LOCAL_TIME_ZONE out of range
-INSERT INTO timestamp_t VALUES (TIMESTAMP WITH LOCAL TIME ZONE '2000-01-01 
00:00:00' + INTERVAL 2922000 DAYS)
+INSERT INTO timestamp_t VALUES (TIMESTAMP WITH LOCAL TIME ZONE '2000-01-01 
00:00:00' + INTERVAL '2922000' DAYS)
 
 statement error: TIMESTAMP_WITH_LOCAL_TIME_ZONE out of range
-INSERT INTO timestamp_t VALUES (TIMESTAMP WITH LOCAL TIME ZONE '2000-01-01 
00:00:00' - INTERVAL 730500 DAYS)
+INSERT INTO timestamp_t VALUES (TIMESTAMP WITH LOCAL TIME ZONE '2000-01-01 
00:00:00' - INTERVAL '730500' DAYS)
 
 statement error: TIMESTAMP_WITH_LOCAL_TIME_ZONE out of range
-INSERT INTO timestamp_t VALUES (TIMESTAMP WITH LOCAL TIME ZONE '2000-01-01 
00:00:00' + INTERVAL 70128000 HOURS)
+INSERT INTO timestamp_t VALUES (TIMESTAMP WITH LOCAL TIME ZONE '2000-01-01 
00:00:00' + INTERVAL '70128000' HOURS)
 
 statement error: TIMESTAMP_WITH_LOCAL_TIME_ZONE out of range
-INSERT INTO timestamp_t VALUES (TIMESTAMP WITH LOCAL TIME ZONE '2000-01-01 
00:00:00' - INTERVAL 17532000 HOURS)
+INSERT INTO timestamp_t VALUES (TIMESTAMP WITH LOCAL TIME ZONE '2000-01-01 
00:00:00' - INTERVAL '17532000' HOURS)
 
 # TODO https://issues.apache.org/jira/browse/IGNITE-17376
 skipif ignite3
@@ -168,7 +168,7 @@ statement error: Invalid default value for column 'TS'
 CREATE TABLE default_overflow(ts TIMESTAMP WITH LOCAL TIME ZONE DEFAULT 
'9999-12-31 06:00:00');
 
 statement error: TIMESTAMP_WITH_LOCAL_TIME_ZONE out of range
-INSERT INTO timestamp_t VALUES (CURRENT_TIMESTAMP + INTERVAL 7999 YEARS)
+INSERT INTO timestamp_t VALUES (CURRENT_TIMESTAMP + INTERVAL '7999' YEARS)
 
 statement error: TIMESTAMP_WITH_LOCAL_TIME_ZONE out of range
-INSERT INTO timestamp_t VALUES (CURRENT_TIMESTAMP - INTERVAL 7999 YEARS)
+INSERT INTO timestamp_t VALUES (CURRENT_TIMESTAMP - INTERVAL '7999' YEARS)
diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/IgniteSqlValidator.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/IgniteSqlValidator.java
index a8129cb425b..68db7dbccb8 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/IgniteSqlValidator.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/IgniteSqlValidator.java
@@ -64,12 +64,14 @@ import org.apache.calcite.sql.SqlBasicCall;
 import org.apache.calcite.sql.SqlBasicTypeNameSpec;
 import org.apache.calcite.sql.SqlCall;
 import org.apache.calcite.sql.SqlCallBinding;
+import org.apache.calcite.sql.SqlCharStringLiteral;
 import org.apache.calcite.sql.SqlDataTypeSpec;
 import org.apache.calcite.sql.SqlDelete;
 import org.apache.calcite.sql.SqlDynamicParam;
 import org.apache.calcite.sql.SqlFunction;
 import org.apache.calcite.sql.SqlIdentifier;
 import org.apache.calcite.sql.SqlInsert;
+import org.apache.calcite.sql.SqlIntervalLiteral;
 import org.apache.calcite.sql.SqlJoin;
 import org.apache.calcite.sql.SqlKind;
 import org.apache.calcite.sql.SqlLiteral;
@@ -1419,6 +1421,13 @@ public class IgniteSqlValidator extends SqlValidatorImpl 
{
         }
 
         try {
+            if (call.getKind() == SqlKind.INTERVAL) {
+                assert !(call.operand(0) instanceof SqlCharStringLiteral)
+                        && !(call.operand(0) instanceof SqlIntervalLiteral)
+                        : "Should never got here in case of interval literal";
+
+                throw newValidationError(call, 
IgniteResource.INSTANCE.unsupportedExpression("String literal expected"));
+            }
             super.validateCall(call, scope);
 
             checkCallsWithCustomTypes(call, scope);
diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rex/IgniteRexBuilder.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rex/IgniteRexBuilder.java
index c73c42a758c..abc6c611815 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rex/IgniteRexBuilder.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rex/IgniteRexBuilder.java
@@ -17,13 +17,18 @@
 
 package org.apache.ignite.internal.sql.engine.rex;
 
+import java.math.BigDecimal;
 import java.util.UUID;
 import org.apache.calcite.avatica.util.ByteString;
+import org.apache.calcite.avatica.util.TimeUnit;
 import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rel.type.RelDataTypeFactory;
 import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.rex.RexLiteral;
 import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.sql.parser.SqlParserPos;
 import org.apache.calcite.sql.type.SqlTypeName;
+import org.apache.calcite.sql.type.SqlTypeUtil;
 import org.apache.calcite.util.NlsString;
 import org.apache.ignite.internal.sql.engine.type.IgniteCustomType;
 import org.apache.ignite.internal.sql.engine.type.IgniteTypeFactory;
@@ -98,4 +103,33 @@ public class IgniteRexBuilder extends RexBuilder {
 
         return super.makeLiteral(value, type, allowCast, trim);
     }
+
+    @Override
+    public RexNode makeCast(
+            SqlParserPos pos,
+            RelDataType type,
+            RexNode exp,
+            boolean matchNullability,
+            boolean safe,
+            RexLiteral format) {
+        if (exp instanceof RexLiteral) {
+            // Override cast for DECIMAL from INTERVAL literal, to be 
consistent with INTERVAL call behavior
+            if (SqlTypeUtil.isExactNumeric(type) && 
SqlTypeUtil.isInterval(exp.getType())) {
+                return makeCastIntervalToExact(pos, type, exp);
+            }
+        }
+
+        return super.makeCast(pos, type, exp, matchNullability, safe, format);
+    }
+
+    // Copy-pasted from RexBuilder.
+    private RexNode makeCastIntervalToExact(SqlParserPos pos, RelDataType 
toType, RexNode exp) {
+        TimeUnit endUnit = exp.getType().getSqlTypeName().getEndUnit();
+        TimeUnit baseUnit = baseUnit(exp.getType().getSqlTypeName());
+        BigDecimal multiplier = baseUnit.multiplier;
+        BigDecimal divider = endUnit.multiplier;
+        RexNode value =
+                multiplyDivide(pos, decodeIntervalOrDecimal(pos, exp), 
multiplier, divider);
+        return ensureType(pos, toType, value, false);
+    }
 }
diff --git 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/CastResolutionTest.java
 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/CastResolutionTest.java
index 34f390bc6cd..01cba2520c2 100644
--- 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/CastResolutionTest.java
+++ 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/CastResolutionTest.java
@@ -305,7 +305,7 @@ public class CastResolutionTest extends AbstractPlannerTest 
{
 
     private static String makeUsableIntervalFromType(String typeName) {
         if (typeName.toLowerCase().contains("interval")) {
-            return typeName.replace("_", " 1 ");
+            return typeName.replace("_", " '1' ");
         }
 
         return makeSpaceName(typeName);
diff --git a/modules/sql-engine/src/testFixtures/resources/tpcds/query12.sql 
b/modules/sql-engine/src/testFixtures/resources/tpcds/query12.sql
index 29e33f91f3c..afb91aed9ce 100644
--- a/modules/sql-engine/src/testFixtures/resources/tpcds/query12.sql
+++ b/modules/sql-engine/src/testFixtures/resources/tpcds/query12.sql
@@ -16,7 +16,7 @@ where
        and i_category in ('Electronics', 'Books', 'Women')
        and ws_sold_date_sk = d_date_sk
        and d_date between cast('1998-01-06' as date) 
-                               and (cast('1998-01-06' as date) + interval 30 
days)
+                               and (cast('1998-01-06' as date) + interval '30' 
days)
 group by 
        i_item_id
         ,i_item_desc 
diff --git a/modules/sql-engine/src/testFixtures/resources/tpcds/query16.sql 
b/modules/sql-engine/src/testFixtures/resources/tpcds/query16.sql
index 32cf8040442..e6a99390d46 100644
--- a/modules/sql-engine/src/testFixtures/resources/tpcds/query16.sql
+++ b/modules/sql-engine/src/testFixtures/resources/tpcds/query16.sql
@@ -10,7 +10,7 @@ from
   ,call_center
 where
     d_date between '1999-4-01' and 
-           (cast('1999-4-01' as date) + interval 60 days)
+           (cast('1999-4-01' as date) + interval '60' days)
 and cs1.cs_ship_date_sk = d_date_sk
 and cs1.cs_ship_addr_sk = ca_address_sk
 and ca_state = 'IL'
diff --git a/modules/sql-engine/src/testFixtures/resources/tpcds/query20.sql 
b/modules/sql-engine/src/testFixtures/resources/tpcds/query20.sql
index a7b19020705..473cac004e4 100644
--- a/modules/sql-engine/src/testFixtures/resources/tpcds/query20.sql
+++ b/modules/sql-engine/src/testFixtures/resources/tpcds/query20.sql
@@ -14,7 +14,7 @@ select  i_item_id
    and i_category in ('Shoes', 'Electronics', 'Children')
    and cs_sold_date_sk = d_date_sk
  and d_date between cast('2001-03-14' as date) 
-                               and (cast('2001-03-14' as date) + interval 30 
days)
+                               and (cast('2001-03-14' as date) + interval '30' 
days)
  group by i_item_id
          ,i_item_desc 
          ,i_category
diff --git a/modules/sql-engine/src/testFixtures/resources/tpcds/query21.sql 
b/modules/sql-engine/src/testFixtures/resources/tpcds/query21.sql
index 02a461fd0e1..d01f4c0febc 100644
--- a/modules/sql-engine/src/testFixtures/resources/tpcds/query21.sql
+++ b/modules/sql-engine/src/testFixtures/resources/tpcds/query21.sql
@@ -16,8 +16,8 @@ select  *
      and i_item_sk          = inv_item_sk
      and inv_warehouse_sk   = w_warehouse_sk
      and inv_date_sk    = d_date_sk
-     and d_date between (cast ('1999-03-20' as date) - interval 30 days)
-                    and (cast ('1999-03-20' as date) + interval 30 days)
+     and d_date between (cast ('1999-03-20' as date) - interval '30' days)
+                    and (cast ('1999-03-20' as date) + interval '30' days)
    group by w_warehouse_name, i_item_id) x
  where (case when inv_before > 0 
              then inv_after / inv_before 
diff --git a/modules/sql-engine/src/testFixtures/resources/tpcds/query32.sql 
b/modules/sql-engine/src/testFixtures/resources/tpcds/query32.sql
index 5e997a5b264..08ff590a5c8 100644
--- a/modules/sql-engine/src/testFixtures/resources/tpcds/query32.sql
+++ b/modules/sql-engine/src/testFixtures/resources/tpcds/query32.sql
@@ -8,7 +8,7 @@ where
 i_manufact_id = 66
 and i_item_sk = cs_item_sk 
 and d_date between '2002-03-29' and 
-        (cast('2002-03-29' as date) + interval 90 days)
+        (cast('2002-03-29' as date) + interval '90' days)
 and d_date_sk = cs_sold_date_sk 
 and cs_ext_discount_amt  
      > ( 
@@ -20,7 +20,7 @@ and cs_ext_discount_amt
          where 
               cs_item_sk = i_item_sk 
           and d_date between '2002-03-29' and
-                             (cast('2002-03-29' as date) + interval 90 days)
+                             (cast('2002-03-29' as date) + interval '90' days)
           and d_date_sk = cs_sold_date_sk 
       ) 
 limit 100;
diff --git a/modules/sql-engine/src/testFixtures/resources/tpcds/query37.sql 
b/modules/sql-engine/src/testFixtures/resources/tpcds/query37.sql
index 18ce2e8d003..6b152d74035 100644
--- a/modules/sql-engine/src/testFixtures/resources/tpcds/query37.sql
+++ b/modules/sql-engine/src/testFixtures/resources/tpcds/query37.sql
@@ -6,7 +6,7 @@ select  i_item_id
  where i_current_price between 39 and 39 + 30
  and inv_item_sk = i_item_sk
  and d_date_sk=inv_date_sk
- and d_date between cast('2001-01-16' as date) and (cast('2001-01-16' as date) 
+ interval 60 days)
+ and d_date between cast('2001-01-16' as date) and (cast('2001-01-16' as date) 
+ interval '60' days)
  and i_manufact_id in (765,886,889,728)
  and inv_quantity_on_hand between 100 and 500
  and cs_item_sk = i_item_sk
diff --git a/modules/sql-engine/src/testFixtures/resources/tpcds/query40.sql 
b/modules/sql-engine/src/testFixtures/resources/tpcds/query40.sql
index cfc2d43ffe0..3fa4c99dabe 100644
--- a/modules/sql-engine/src/testFixtures/resources/tpcds/query40.sql
+++ b/modules/sql-engine/src/testFixtures/resources/tpcds/query40.sql
@@ -18,8 +18,8 @@ select
  and i_item_sk          = cs_item_sk
  and cs_warehouse_sk    = w_warehouse_sk 
  and cs_sold_date_sk    = d_date_sk
- and d_date between (cast ('2000-03-18' as date) - interval 30 days)
-                and (cast ('2000-03-18' as date) + interval 30 days)
+ and d_date between (cast ('2000-03-18' as date) - interval '30' days)
+                and (cast ('2000-03-18' as date) + interval '30' days)
  group by
     w_state,i_item_id
  order by w_state,i_item_id
diff --git a/modules/sql-engine/src/testFixtures/resources/tpcds/query5.sql 
b/modules/sql-engine/src/testFixtures/resources/tpcds/query5.sql
index 994b211326b..9a0be7df453 100644
--- a/modules/sql-engine/src/testFixtures/resources/tpcds/query5.sql
+++ b/modules/sql-engine/src/testFixtures/resources/tpcds/query5.sql
@@ -26,7 +26,7 @@ with ssr as
      store
  where date_sk = d_date_sk
        and d_date between cast('2000-08-19' as date) 
-                  and (cast('2000-08-19' as date) + interval 14 days)
+                  and (cast('2000-08-19' as date) + interval '14' days)
        and store_sk = s_store_sk
  group by s_store_id)
  ,
@@ -57,7 +57,7 @@ with ssr as
      catalog_page
  where date_sk = d_date_sk
        and d_date between cast('2000-08-19' as date)
-                  and (cast('2000-08-19' as date) + interval 14 days)
+                  and (cast('2000-08-19' as date) + interval '14' days)
        and page_sk = cp_catalog_page_sk
  group by cp_catalog_page_id)
  ,
@@ -90,7 +90,7 @@ with ssr as
      web_site
  where date_sk = d_date_sk
        and d_date between cast('2000-08-19' as date)
-                  and (cast('2000-08-19' as date) + interval 14 days)
+                  and (cast('2000-08-19' as date) + interval '14' days)
        and wsr_web_site_sk = web_site_sk
  group by web_site_id)
   select  channel
diff --git a/modules/sql-engine/src/testFixtures/resources/tpcds/query72.sql 
b/modules/sql-engine/src/testFixtures/resources/tpcds/query72.sql
index 85db71ca1ef..2599c7dc679 100644
--- a/modules/sql-engine/src/testFixtures/resources/tpcds/query72.sql
+++ b/modules/sql-engine/src/testFixtures/resources/tpcds/query72.sql
@@ -18,7 +18,7 @@ left outer join promotion on (cs_promo_sk=p_promo_sk)
 left outer join catalog_returns on (cr_item_sk = cs_item_sk and 
cr_order_number = cs_order_number)
 where d1.d_week_seq = d2.d_week_seq
   and inv_quantity_on_hand < cs_quantity 
-  and d3.d_date > d1.d_date + INTERVAL(5) DAY 
+  and d3.d_date > d1.d_date + INTERVAL '5' DAY
   and hd_buy_potential = '1001-5000'
   and d1.d_year = 2000
   and cd_marital_status = 'D'
diff --git a/modules/sql-engine/src/testFixtures/resources/tpcds/query77.sql 
b/modules/sql-engine/src/testFixtures/resources/tpcds/query77.sql
index 3762ac4af5a..3616ecf1ea6 100644
--- a/modules/sql-engine/src/testFixtures/resources/tpcds/query77.sql
+++ b/modules/sql-engine/src/testFixtures/resources/tpcds/query77.sql
@@ -8,7 +8,7 @@ with ss as
       store
  where ss_sold_date_sk = d_date_sk
        and d_date between cast('2000-08-16' as date) 
-                  and (cast('2000-08-16' as date) + interval 30 days)
+                  and (cast('2000-08-16' as date) + interval '30' days)
        and ss_store_sk = s_store_sk
  group by s_store_sk)
  ,
@@ -21,7 +21,7 @@ with ss as
       store
  where sr_returned_date_sk = d_date_sk
        and d_date between cast('2000-08-16' as date)
-                  and (cast('2000-08-16' as date) + interval 30 days)
+                  and (cast('2000-08-16' as date) + interval '30' days)
        and sr_store_sk = s_store_sk
  group by s_store_sk), 
  cs as
@@ -32,7 +32,7 @@ with ss as
       date_dim
  where cs_sold_date_sk = d_date_sk
        and d_date between cast('2000-08-16' as date)
-                  and (cast('2000-08-16' as date) + interval 30 days)
+                  and (cast('2000-08-16' as date) + interval '30' days)
  group by cs_call_center_sk 
  ), 
  cr as
@@ -43,7 +43,7 @@ with ss as
       date_dim
  where cr_returned_date_sk = d_date_sk
        and d_date between cast('2000-08-16' as date)
-                  and (cast('2000-08-16' as date) + interval 30 days)
+                  and (cast('2000-08-16' as date) + interval '30' days)
  group by cr_call_center_sk
  ), 
  ws as
@@ -55,7 +55,7 @@ with ss as
       web_page
  where ws_sold_date_sk = d_date_sk
        and d_date between cast('2000-08-16' as date)
-                  and (cast('2000-08-16' as date) + interval 30 days)
+                  and (cast('2000-08-16' as date) + interval '30' days)
        and ws_web_page_sk = wp_web_page_sk
  group by wp_web_page_sk), 
  wr as
@@ -67,7 +67,7 @@ with ss as
       web_page
  where wr_returned_date_sk = d_date_sk
        and d_date between cast('2000-08-16' as date)
-                  and (cast('2000-08-16' as date) + interval 30 days)
+                  and (cast('2000-08-16' as date) + interval '30' days)
        and wr_web_page_sk = wp_web_page_sk
  group by wp_web_page_sk)
   select  channel
diff --git a/modules/sql-engine/src/testFixtures/resources/tpcds/query80.sql 
b/modules/sql-engine/src/testFixtures/resources/tpcds/query80.sql
index 154350c1c6c..6378d6f4f71 100644
--- a/modules/sql-engine/src/testFixtures/resources/tpcds/query80.sql
+++ b/modules/sql-engine/src/testFixtures/resources/tpcds/query80.sql
@@ -12,7 +12,7 @@ with ssr as
      promotion
  where ss_sold_date_sk = d_date_sk
        and d_date between cast('2002-08-06' as date) 
-                  and (cast('2002-08-06' as date) + interval 30 days)
+                  and (cast('2002-08-06' as date) + interval '30' days)
        and ss_store_sk = s_store_sk
        and ss_item_sk = i_item_sk
        and i_current_price > 50
@@ -33,7 +33,7 @@ with ssr as
      promotion
  where cs_sold_date_sk = d_date_sk
        and d_date between cast('2002-08-06' as date)
-                  and (cast('2002-08-06' as date) + interval 30 days)
+                  and (cast('2002-08-06' as date) + interval '30' days)
         and cs_catalog_page_sk = cp_catalog_page_sk
        and cs_item_sk = i_item_sk
        and i_current_price > 50
@@ -54,7 +54,7 @@ group by cp_catalog_page_id)
      promotion
  where ws_sold_date_sk = d_date_sk
        and d_date between cast('2002-08-06' as date)
-                  and (cast('2002-08-06' as date) + interval 30 days)
+                  and (cast('2002-08-06' as date) + interval '30' days)
         and ws_web_site_sk = web_site_sk
        and ws_item_sk = i_item_sk
        and i_current_price > 50
diff --git a/modules/sql-engine/src/testFixtures/resources/tpcds/query82.sql 
b/modules/sql-engine/src/testFixtures/resources/tpcds/query82.sql
index 263bc6fc888..76103bc2e2d 100644
--- a/modules/sql-engine/src/testFixtures/resources/tpcds/query82.sql
+++ b/modules/sql-engine/src/testFixtures/resources/tpcds/query82.sql
@@ -6,7 +6,7 @@ select  i_item_id
  where i_current_price between 49 and 49+30
  and inv_item_sk = i_item_sk
  and d_date_sk=inv_date_sk
- and d_date between cast('2001-01-28' as date) and (cast('2001-01-28' as date) 
+ interval 60 days)
+ and d_date between cast('2001-01-28' as date) and (cast('2001-01-28' as date) 
+ interval '60' days)
  and i_manufact_id in (80,675,292,17)
  and inv_quantity_on_hand between 100 and 500
  and ss_item_sk = i_item_sk
diff --git a/modules/sql-engine/src/testFixtures/resources/tpcds/query92.sql 
b/modules/sql-engine/src/testFixtures/resources/tpcds/query92.sql
index c67af17d75a..7d74e745374 100644
--- a/modules/sql-engine/src/testFixtures/resources/tpcds/query92.sql
+++ b/modules/sql-engine/src/testFixtures/resources/tpcds/query92.sql
@@ -9,7 +9,7 @@ where
 i_manufact_id = 356
 and i_item_sk = ws_item_sk 
 and d_date between '2001-03-12' and 
-        (cast('2001-03-12' as date) + interval 90 days)
+        (cast('2001-03-12' as date) + interval '90' days)
 and d_date_sk = ws_sold_date_sk 
 and ws_ext_discount_amt  
      > ( 
@@ -21,7 +21,7 @@ and ws_ext_discount_amt
          WHERE 
               ws_item_sk = i_item_sk 
           and d_date between '2001-03-12' and
-                             (cast('2001-03-12' as date) + interval 90 days)
+                             (cast('2001-03-12' as date) + interval '90' days)
           and d_date_sk = ws_sold_date_sk 
       ) 
 order by sum(ws_ext_discount_amt)
diff --git a/modules/sql-engine/src/testFixtures/resources/tpcds/query94.sql 
b/modules/sql-engine/src/testFixtures/resources/tpcds/query94.sql
index ad28042276a..7e76882c470 100644
--- a/modules/sql-engine/src/testFixtures/resources/tpcds/query94.sql
+++ b/modules/sql-engine/src/testFixtures/resources/tpcds/query94.sql
@@ -10,7 +10,7 @@ from
   ,web_site
 where
     d_date between '1999-4-01' and 
-           (cast('1999-4-01' as date) + interval 60 days)
+           (cast('1999-4-01' as date) + interval '60' days)
 and ws1.ws_ship_date_sk = d_date_sk
 and ws1.ws_ship_addr_sk = ca_address_sk
 and ca_state = 'NE'
diff --git a/modules/sql-engine/src/testFixtures/resources/tpcds/query95.sql 
b/modules/sql-engine/src/testFixtures/resources/tpcds/query95.sql
index bdc71ee189e..2869de89c5c 100644
--- a/modules/sql-engine/src/testFixtures/resources/tpcds/query95.sql
+++ b/modules/sql-engine/src/testFixtures/resources/tpcds/query95.sql
@@ -15,7 +15,7 @@ from
   ,web_site
 where
     d_date between '2002-4-01' and 
-           (cast('2002-4-01' as date) + interval 60 days)
+           (cast('2002-4-01' as date) + interval '60' days)
 and ws1.ws_ship_date_sk = d_date_sk
 and ws1.ws_ship_addr_sk = ca_address_sk
 and ca_state = 'AL'
diff --git a/modules/sql-engine/src/testFixtures/resources/tpcds/query98.sql 
b/modules/sql-engine/src/testFixtures/resources/tpcds/query98.sql
index 4a043f67cf5..8efaf04e709 100644
--- a/modules/sql-engine/src/testFixtures/resources/tpcds/query98.sql
+++ b/modules/sql-engine/src/testFixtures/resources/tpcds/query98.sql
@@ -16,7 +16,7 @@ where
        and i_category in ('Home', 'Sports', 'Men')
        and ss_sold_date_sk = d_date_sk
        and d_date between cast('2002-01-05' as date) 
-                               and (cast('2002-01-05' as date) + interval 30 
days)
+                               and (cast('2002-01-05' as date) + interval '30' 
days)
 group by 
        i_item_id
         ,i_item_desc 


Reply via email to