从 R 将日期写入 SQL 服务器数据
Writing dates to SQL Server data from R
我正在通过 odbc 将 data.frame
保存到新 table 中的 SQL 服务器数据库。 data.frame
在一列中包含日期。
我正在使用以下命令:
require(odbc)
require(DBI)
MyData <- data.frame(Date = as.Date(c("2017-05-17","2017-05-18"), format = "%Y-%m-%d"))
conn <- DBI::dbConnect(drv = odbc::odbc(), dsn='MyDatabaseSource')
dbWriteTable(conn = conn, name = 'dbo.MyTable', value = MyData, overwrite = T)
但是,这会导致出现以下错误消息:
Error in result_insert_dataframe(rs@ptr, values) : nanodbc/nanodbc.cpp:1587: 22007: [Microsoft][ODBC SQL Server Driver][SQL Server]Conversion failed when converting date and/or time from character string.
我可以通过将列类型更改为 character
来解决它,但随后该列在数据库中存储为 varchar(255)
。如何在数据库中以日期格式而不是 varchar
存储日期列?
问题已通过使用 sepupic 在评论中建议的与语言无关的日期格式 yyyymmdd 解决。我通过将日期列更改为 yyyymmdd 格式的 chr
然后返回日期格式来做到这一点:
MyData$Date <- as.Date(format(MyData$Date, "%Y%m%d"), format = "%Y%m%d")
我正在通过 odbc 将 data.frame
保存到新 table 中的 SQL 服务器数据库。 data.frame
在一列中包含日期。
我正在使用以下命令:
require(odbc)
require(DBI)
MyData <- data.frame(Date = as.Date(c("2017-05-17","2017-05-18"), format = "%Y-%m-%d"))
conn <- DBI::dbConnect(drv = odbc::odbc(), dsn='MyDatabaseSource')
dbWriteTable(conn = conn, name = 'dbo.MyTable', value = MyData, overwrite = T)
但是,这会导致出现以下错误消息:
Error in result_insert_dataframe(rs@ptr, values) : nanodbc/nanodbc.cpp:1587: 22007: [Microsoft][ODBC SQL Server Driver][SQL Server]Conversion failed when converting date and/or time from character string.
我可以通过将列类型更改为 character
来解决它,但随后该列在数据库中存储为 varchar(255)
。如何在数据库中以日期格式而不是 varchar
存储日期列?
问题已通过使用 sepupic 在评论中建议的与语言无关的日期格式 yyyymmdd 解决。我通过将日期列更改为 yyyymmdd 格式的 chr
然后返回日期格式来做到这一点:
MyData$Date <- as.Date(format(MyData$Date, "%Y%m%d"), format = "%Y%m%d")