我可以将日期写入 SQL 表,DBI::dbWriteTable()并看到该列实际上在数据库上被格式化为日期。但是当我使用DBI::dbReadTable()相同的日期列时,它会被强制转换为 R 中的字符列。
如何将 SQL 表读入 R 并保留日期列格式?
library(DBI)
df <- data.frame(date = as.Date("2012-01-01"))
class(df$date)
#> [1] "Date"
udt <- dbConnect(odbc::odbc(), "udt")
dbWriteTable(udt, name = Id(schema = "FarmingAnalytics", table = "test"), value = df, overwrite = TRUE)
df2 <- dbReadTable(udt, name = Id(schema = "FarmingAnalytics", table = "test"))
class(df2$date)
#> [1] "character"
Run Code Online (Sandbox Code Playgroud)
由reprex 包于 2020 年 1 月 20 日创建(v0.3.0)
小智 0
这对我有用
df2$date <- as.Date(df2$date)
Run Code Online (Sandbox Code Playgroud)
更一般地说
datecols <- dbGetQuery(udt, "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE UPPER(TABLE_SCHEMA)='FARMINGANALYTICS' AND
UPPER(TABLE_NAME)='TEST' AND DATA_TYPE='date'" )
for (col in datecols$COLUMN_NAME){
df2[[col]]<- as.Date(df2[[col]])
}
Run Code Online (Sandbox Code Playgroud)