我在 R 中有一段时间,我想在 DATETIME 列中写入 MySQL 表。我怎样才能做到这一点?如果我将其格式化为字符串 SQL 将无法识别它;如果我使用as.POSIXlt
SQL 仍然无法识别它。
我只是使用标准dbConnect
和dbWriteTable
语句,它们适用于非日期就好了。
据此:_
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 来测试它。试试看,让我知道这是否有帮助。
我一直在使用 agstudy 的解决方案,然后在使用 dbSendQuery 的 dbWriteTable 之后调用此 SQL。似乎运作良好。
ALTER TABLE TableName MODIFY DateFieldName datetime;