2016-09-15 66 views
0

我希望基于闪亮的应用程序回写到mysql数据库。 这个代码有一些修改来自优秀的1。我添加了一部分来给我插入记录的时间戳。当我尝试插入我得到以下错误。当地使用Shiny将记录插入MYSQL数据库

错误(康涅狄格州,声明,...)备案: 无法运行的语句:不正确的日期时间值:“1473931679.54479”列“insert_dtm”在第1行

此日期时间值由我的代码的Add insertion time stamp of the record and re-order columns生成。任何人都可以解释为什么会这样。

我应该在正在写入的数据类型的表提的是DATETIME但我可以将其更改为任何东西作为兴趣在所有IM是跟踪时,记录插入的

save_data <- function(data) { 
    # Connect to the database 
    db <- dbConnect(MySQL(), dbname = databaseName, host =  
    options()$mysql$host, 
       port = options()$mysql$port, user = options()$mysql$user, 
       password = options()$mysql$password) 

    # Add insertion time stamp of the record and re-order columns 
    data <- data %>% 
    mutate(insert_dtm = Sys.time()) %>% 
    select (insert_dtm, everything()) %>% 

    # Construct the update query by looping over the data fields 
    query <- sprintf(foo) 

    # Submit the update query and disconnect 
    dbGetQuery(db, query) 
    dbDisconnect(db) 
} 
+1

您是否尝试过'as.Date(Sys.time() format =“%Y-%m-%d”)'而不是'Sys.time()'? – GyD

+0

谢谢@GyD的确是这个原因。我在MYSQL数据库中对它进行了更改,以便在新记录进入系统时更新时间戳,同时也测试了您的解决方案。感谢您的帮助。请添加它作为答案,我会接受它 –

+0

我刚刚意识到你需要'日期时间',但我建议转换为'日期',但使用format()函数(并转换为字符)也应该工作。请检查一下。 – GyD

回答

1

之所以它不起作用是因为日期格式Sys.time()和MySQL datedatetime类型之间的差异。

> Sys.time() 
###[1] "2016-09-23 11:30:36 CEST" 
###MySQL datetime: "2016-09-23 11:30:36" 

转换为MySQL日期时间格式后,它应该工作。我认为问题在于时区。

对于YYYY-MM-DD格式

> format(Sys.time(), "%Y-%m-%d") 
###[1] "2016-09-23" 

对于YYYY-MM-DD HH:mm:ss格式

> format(Sys.time(), "%Y-%m-%d %H:%M:%S") 
###[1] "2016-09-23 11:37:45" 
相关问题