2015-03-08 97 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