![](/img/trans.png)
[英]How do you retrieve the return value of a DB2 SQL sproc using Perl DBI?
[英]How do you write a table to DB using DBI/dbplyr and preserve date field?
當我使用{DBI}
和{dbplyr}
將包含日期類型字段的表寫入數據庫時,該字段被強制為字符。 如何讓它作為日期類型寫入 SQL 服務器數據庫表?
library(DBI)
library(odbc)
library(dbplyr)
con.write <- dbConnect(drv = odbc(),
Driver = "SQL Server",
Server = "MYSERVER",
Database = "MYDATABASE")
cars <- mtcars %>%
mutate(AsOfDate = as.Date('2022-01-24'))
查看日期字段的 class:
> class(cars$AsOfDate)
[1] "Date"
現在寫入數據庫並從數據庫中重新讀取。
dbWriteTable(con.write, name = "tmp_mtcars",
value = cars, row.names = TRUE)
dbcars <- tbl(con.write, "tmp_mtcars") %>% collect()
觀察我們剛剛寫入數據庫的字段的class:
> class(dbcars$AsOfDate)
[1] "character"
一種解決方法是使用as.POSIXct
而不是as.Date
:
cars <- mtcars %>%
mutate(AsOfDate = as.POSIXct('2022-01-24'))
dbWriteTable(con.write, name = "tmp_mtcars",
value = cars, row.names = TRUE)
dbcars <- tbl(con.write, "tmp_mtcars") %>% collect()
> class(dbcars$AsOfDate)
[1] "POSIXct" "POSIXt"
我不確定使用as.Date
與as.POSIXct
的功能效果是什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.