用RMySQL写日期

时间:2013-02-26 01:41:18

标签: mysql r rmysql

我在R中有一段时间,我想在DATETIME列中写入MySQL表。我怎样才能做到这一点?如果我将其格式化为字符串SQL无法识别它;如果我使用as.POSIXlt SQL仍然无法识别它。

我只是使用标准的dbConnectdbWriteTable语句,这些语句可以很好地处理非日期。

2 个答案:

答案 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;