2015-03-08 35 views
0

当我使用RODBC将一个类POSIXct的列写入MySQL数据库时,它会被截断为只有一年。 出现这种情况,例如有:posix通过rodbc写入mysql数据库会被截断

sqlSave(connection, dat = data.frame(date = as.POSIXct("2015-01-01 08:10:00")+0:10*60), 
    tablename = "date_column") 

我怎样才能避免这种情况?

+0

为什么不使用RMySQL? – hadley 2015-03-09 02:31:22

+0

不幸的是我忘了我为什么决定不使用它。 RMySQL比RODBC有什么优势,除了它更易于设置? – tover 2015-03-09 22:52:15

+0

从理论上讲,应该快一点,因为RMySQL直接与MySQL通话而不是通过第三方。不知道它有多少实际的不同。 – hadley 2015-03-10 19:33:29

回答

0

你可能需要做datetime类型的列在mysql中明确这样的:

library(RODBC) 
con <- odbcConnect("mysql", uid="root", case = "tolower") 
(dat <- data.frame(date = Sys.time())) 
#     date 
# 1 2015-03-08 23:55:33 
res <- sqlSave(con, dat = dat, varTypes = c("date" = "datetime"), tablename = "date_column") 
close(con) 
+0

是的,这是解决方案!谢谢!可能还值得指出的是,如果存在差异(例如,日期变为日期),则“日期”必须拼写为将在sql表中命名,而不是像data.frame中那样。 – tover 2015-03-08 23:15:54