1

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

我只是使用标准dbConnectdbWriteTable语句,它们适用于非日期就好了。

4

2 回答 2

6

据此:_

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 来测试它。试试看,让我知道这是否有帮助。

于 2013-02-26T03:21:53.213 回答
1

我一直在使用 agstudy 的解决方案,然后在使用 dbSendQuery 的 dbWriteTable 之后调用此 SQL。似乎运作良好。

ALTER TABLE TableName MODIFY DateFieldName datetime;
于 2015-08-16T04:10:56.227 回答