将日期从 MySQL 正确导入 R

importing date correctly from MySQL into R

我的问题几乎相同as this one。简而言之,我正在使用 dplyr(连同 RMySQL)导入带有日期时间列的 MySQL table,我想将其转换为 R 中的日期。在问题中上面链接,posted 没有答案,只有 Hadley 的评论。 OP 显然根据所发表的评论找到了解决方案。我从 Hadley 的评论中了解到,我可以通过将列作为日期正确导入 R 来解决问题。然后就不需要使用 as.Date。但是,我找不到如何使用 dplyr 和 RMySQL.

我不知道如何 post 一个完全可重现的例子,因为它是一个 MySQL 数据库连接,但我会 post 我的代码:

如果我尝试:

pedidos <-  my_db %>%
tbl("pedidos") %>%
mutate(test = as.Date(DateSent))

然后我运行:

pedidos

R returns:

FUNCTION AS.DATE does not exist

就像另一个问题中的 OP 一样,我可以使用 collect() 来解决这个问题,但是它违背了不将数据复制到内存中的目的。这是有关 MySQL 中数据类型的一些信息 DateSent 是日期时间

和 R sessionInfo():

R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

locale:
[1] LC_COLLATE=Portuguese_Brazil.1252 
[2] LC_CTYPE=Portuguese_Brazil.1252   
[3] LC_MONETARY=Portuguese_Brazil.1252
[4] LC_NUMERIC=C                      
[5] LC_TIME=Portuguese_Brazil.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets 
[6] methods   base     

other attached packages:
[1] RMySQL_0.10.11 DBI_0.5-1      dplyr_0.5.0   
[4] digest_0.6.12 

loaded via a namespace (and not attached):
[1] lazyeval_0.2.0 magrittr_1.5   R6_2.2.0      
[4] assertthat_0.1 rsconnect_0.5  tools_3.3.1   
[7] tibble_1.2     Rcpp_0.12.8  

我也解决了日期时间列的问题,但是简短的回答是,用 RMariaDB 替换当前的 MySQL DBI 驱动程序是解决方案。

正如这个问题下的评论所说,这个问题实际上已经在RMySQL from 0.11的开发上游解决了,但唯一的问题是官方CRAN存储库没有这个版本。换句话说,如果您不介意通过 devtools 手动安装软件包,那么从 RMySQL 0.11 源代码安装正是这个问题的答案。

但是正如readme中官方所说,RMariaDB package is going to be as a replacement to the RMySQL driver. Surely, the function that Datetime Support也包含在RMariaDB的主流包中。更重要的是,最新版本 1.0.6 可从 CRAN 官方存储库获得。