我在R中有一段时间,我想在DATETIME列中写入MySQL表。我怎样才能做到这一点?如果我将其格式化为字符串SQL无法识别它;如果我使用as.POSIXlt
SQL仍然无法识别它。
我只是使用标准的dbConnect
和dbWriteTable
语句,这些语句可以很好地处理非日期。
答案 0 :(得分:4)
根据this:
MySQL以这些格式识别DATETIME和TIMESTAMP值: 作为'YYYY-MM-DD HH:MM:SS'或'YY-MM-DD HH:MM:SS'格式的字符串。
因此,一种解决方案是以正确的格式格式化您的日期:
now <- as.POSIXlt(Sys.time())
now.str <- format(now,'%Y-%m-%d %H:%M:%S')
now.str
[1] "2013-02-26 04:12:24"
或采用此格式
format(now,'%Y%m%d%H%M%S')
[1] "20130226041224"
然后使用dbSendQuery
更新您的表格。以下是为任何表和任何日期创建动态查询的示例。根据您的需求进行调整。
table.Name <- "MY_TABLE"
query <- paste(paste('UPDATE ', table.Name,sep=''),
paste('SET datetime_column =' ,"'",now.str,"'",sep=''),
'WHERE id=1',sep='\n')
cat(query)
UPDATE MY_TABLE
SET datetime_column ='2013-02-26 04:12:24'
WHERE id=1
dbSendQuery(con, query)
我认为,一旦您以正确的格式格式化日期,这应该与dbWritetable
一起使用。但我没有安装MySQL来测试它。尝试一下,如果有帮助请告诉我。
答案 1 :(得分:1)
我一直在使用agstudy的解决方案,然后使用dbSendQuery在dbWriteTable之后调用此SQL。似乎运作良好。
ALTER TABLE TableName MODIFY DateFieldName datetime;