使用Shiny将记录插入MYSQL数据库

时间:2016-09-15 09:40:00

标签: mysql r datetime shiny

我希望基于闪亮的应用回写一个mysql数据库。 这段代码经过了一些修改,来自优秀的1。我添加了一部分来给我记录的插入时间戳。当我尝试插入记录时,我收到以下错误

  

.local(conn,statement,...)出错:     无法运行语句:日期时间值不正确:' 1473931679.54479'对于列' insert_dtm'在第1行

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

我应该在表中提到正在写入数据类型的是DATETIME,但我可以将其更改为任何内容,因为我感兴趣的是跟踪记录的插入时间

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 个答案:

答案 0 :(得分:1)

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

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

转换为MySQL datetime格式后,它应该可以工作。我认为问题是时区。

对于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"