2017-12-11 4 views
1

Ich speichere eine data.frame über ODBC in einer SQL Server-Datenbank in einer neuen Tabelle. Die data.frame enthält Daten in einer Spalte.Schreiben von Daten in SQL Server-Daten von R

ich die folgenden Befehle verwenden:

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) 

Dies führt jedoch in der folgenden Fehlermeldung:

Error in result_insert_dataframe([email protected], values) : nanodbc/nanodbc.cpp:1587: 22007: [Microsoft][ODBC SQL Server Driver][SQL Server]Conversion failed when converting date and/or time from character string. 

Ich kann es lösen, indem Sie den Spaltentyp zu character ändern, aber dann dem Spalte wird als varchar(255) in der Datenbank gespeichert. Wie speichere ich die Datumsspalte im Datumsformat in der Datenbank und nicht varchar?

+0

Was ist die Art dieser Spalte in der Datenbank? –

+0

Die Tabelle existiert nicht, also erstellt dbWriteTable die Tabelle ... – Mace

+2

Verwenden Sie kein sprachabhängiges Format JJJJ-MM-TT, verwenden Sie JJJJMMTT – sepupic

Antwort

1

Das Problem wurde gelöst, indem das sprachunabhängige Datumsformat yyyymmdd wie von sepupic in den Kommentaren vorgeschlagen verwendet wurde. Ich tat dies nach dem Datum Spalte chr im yyyymmdd Format zu ändern und dann wieder auf das Datumsformat:

MyData$Date <- as.Date(format(MyData$Date, "%Y%m%d"), format = "%Y%m%d")