diff --git a/R/backend-dbplyr__duckdb_connection.R b/R/backend-dbplyr__duckdb_connection.R index a36bf377a..660094e18 100644 --- a/R/backend-dbplyr__duckdb_connection.R +++ b/R/backend-dbplyr__duckdb_connection.R @@ -275,10 +275,10 @@ sql_translation.duckdb_connection <- function(con) { # clock add_days = function(x, n, ...) { - build_sql("DATE_ADD(", !!x, ", INTERVAL '", n ," day')") + build_sql("DATE_ADD(", !!x, ", INTERVAL (", n ,") day)") }, add_years = function(x, n, ...) { - build_sql("DATE_ADD(", !!x, ", INTERVAL '", n ," year')") + build_sql("DATE_ADD(", !!x, ", INTERVAL (", n ,") year)") }, get_year = function(x) { build_sql("DATE_PART('year', ", !!x, ")") diff --git a/tests/testthat/test-backend-dbplyr__duckdb_connection.R b/tests/testthat/test-backend-dbplyr__duckdb_connection.R index 0a4435c1e..1d74d44c5 100644 --- a/tests/testthat/test-backend-dbplyr__duckdb_connection.R +++ b/tests/testthat/test-backend-dbplyr__duckdb_connection.R @@ -141,11 +141,12 @@ test_that("custom clock functions translated correctly", { translate <- function(...) dbplyr::translate_sql(..., con = con) sql <- function(...) dbplyr::sql(...) - expect_equal(translate(add_days(x, 1L)), sql(r"{DATE_ADD(x, INTERVAL '1 day')}")) - expect_equal(translate(add_days(x, 2L)), sql(r"{DATE_ADD(x, INTERVAL '2 day')}")) + m <- 1 + expect_equal(translate(add_days(x, m)), sql(r"{DATE_ADD(x, INTERVAL (m) day)}")) + expect_equal(translate(add_days(x, 2L)), sql(r"{DATE_ADD(x, INTERVAL (2) day)}")) - expect_equal(translate(add_years(x, 1L)), sql(r"{DATE_ADD(x, INTERVAL '1 year')}")) - expect_equal(translate(add_years(x, 2L)), sql(r"{DATE_ADD(x, INTERVAL '2 year')}")) + expect_equal(translate(add_years(x, m)), sql(r"{DATE_ADD(x, INTERVAL (m) year)}")) + expect_equal(translate(add_years(x, 2L)), sql(r"{DATE_ADD(x, INTERVAL (2) year)}")) expect_equal(translate(get_day(x)), sql(r"{DATE_PART('day', x)}")) expect_equal(translate(get_month(x)), sql(r"{DATE_PART('month', x)}"))