我希望基于闪亮的应用回写一个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)
}
答案 0 :(得分:1)
它之所以不起作用,是因为Sys.time()
和MySQL date
或datetime
类型的日期格式之间存在差异。
> 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"