skip_on_cran()
test_that("timestamp without time zone is returned correctly for TZ set (#190)", {
withr::local_timezone("America/Chicago")
query <- "SELECT CAST('2018-01-01 12:30:00' AS DATETIME) AS a, @@SESSION.time_zone AS b"
db <- mariadb_default(timezone = NULL)
res <- dbGetQuery(db, query)
expect_equal(res[[1]], as.POSIXct("2018-01-01 12:30:00", tz = res[[2]]))
dbDisconnect(db)
db <- mariadb_default(timezone = "UTC")
expect_equal(
dbGetQuery(db, query)[[1]],
as.POSIXct("2018-01-01 12:30:00", tz = "UTC")
)
dbDisconnect(db)
db <- mariadb_default(timezone = "America/Chicago")
expect_equal(
dbGetQuery(db, query)[[1]],
as.POSIXct("2018-01-01 12:30:00", tz = "America/Chicago")
)
dbDisconnect(db)
db <- mariadb_default(timezone = "America/New_York")
expect_equal(
dbGetQuery(db, query)[[1]],
as.POSIXct("2018-01-01 12:30:00", tz = "America/New_York")
)
dbDisconnect(db)
db <- mariadb_default(timezone = "Europe/London")
expect_equal(
dbGetQuery(db, query)[[1]],
as.POSIXct("2018-01-01 12:30:00", tz = "Europe/London")
)
dbDisconnect(db)
db <- mariadb_default(timezone = "Europe/Zurich")
expect_equal(
dbGetQuery(db, query)[[1]],
as.POSIXct("2018-01-01 12:30:00", tz = "Europe/Zurich")
)
dbDisconnect(db)
})
test_that("timestamp with time zone is returned correctly (#205)", {
con <- mariadb_default()
on.exit(dbDisconnect(con))
withr::local_timezone("America/New_York")
con <- mariadb_default(timezone = "America/Chicago")
query <- "CREATE TEMPORARY TABLE junk AS
(SELECT CAST('2020-05-04' AS DATETIME) AS ts)"
res <- dbExecute(con, query)
res <- dbGetQuery(con, "SELECT * FROM junk")
expect_equal(res[[1]], as.POSIXct("2020-05-04", tz = "America/Chicago"))
})
test_that("timestamp without time zone is returned correctly (#221)", {
con <- mariadb_default()
on.exit(dbDisconnect(con))
out <- dbGetQuery(con, "SELECT CAST('1960-01-01 12:00:00' AS DATETIME) AS before_epoch")
expect_equal(as.Date(out[[1]]), as.Date("1960-01-01"))
})
test_that("timezone is passed on to the connection (#229)", {
my_tz <- "US/Alaska"
con <- mariadb_default(timezone = my_tz)
on.exit(dbDisconnect(con))
example <- data.frame(val = 0:71)
example$ts <-
lubridate::ymd_hms("2019-04-30 00:00:00", tz = my_tz) +
lubridate::hours(example$val)
dbWriteTable(
con, "example", example, temporary = TRUE,
overwrite = TRUE, append = FALSE
)
res <- dbReadTable(con, "example")
expect_equal(res, example)
query <- '
SELECT date(ts) AS dte, MIN(val) AS min_val, MAX(val) AS max_val
FROM example
GROUP BY dte
ORDER BY dte'
expected <- data.frame(
dte = as.Date("2019-04-30") + 0:2,
min_val = 0:2 * 24,
max_val = 0:2 * 24 + 23
)
res <- dbGetQuery(con, query)
expect_equal(res, expected)
})
test_that("warning if time zone not interpretable", {
skip_on_cran()
expect_warning(con <- mariadb_default(timezone = "+01:00"))
dbDisconnect(con)
expect_warning(con <- mariadb_default(timezone_out = "+01:00"))
dbDisconnect(con)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.