从R写入SQL Server数据的日期

问题描述 投票:2回答:1

我通过odbc将data.frame保存到新表中的SQL Server数据库。 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)存储在数据库中。如何以数据库中的日期格式存储Date列而不是varchar

sql-server r r-dbi
1个回答
1
投票

通过在注释中使用sepupic建议的与语言无关的日期格式yyyymmdd解决了该问题。我通过将日期列更改为yyyymmdd格式的chr然后返回日期格式来完成此操作:

MyData$Date <- as.Date(format(MyData$Date, "%Y%m%d"), format = "%Y%m%d") 
© www.soinside.com 2019 - 2024. All rights reserved.