我在R中有一个时间,我想把它写到DATETIME列中的MySQL表中。我该怎么做呢?如果我将其格式化为字符串,SQL将无法识别它;如果我使用as.POSIXlt,SQL仍然无法识别它。
我只使用标准的dbConnect和dbWriteTable语句,它们可以很好地处理非日期。
发布于 2013-02-26 11:21:53
根据this的说法
MySQL可以识别以下格式的日期时间和时间戳值:'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来测试它。试一试,让我知道这是否有帮助。
发布于 2015-08-16 12:10:56
我一直在使用agstudy的解决方案,然后使用dbSendQuery在dbWriteTable之后调用这个SQL。看起来运行得很好。
ALTER TABLE TableName MODIFY DateFieldName datetime;https://stackoverflow.com/questions/15079891
复制相似问题