Rで、DATETIME列のMySQLテーブルに書き込みたい時間があります。どうやってやるの?文字列としてフォーマットすると、SQLはそれを認識しません。SQLを使用as.POSIXlt
しても、それを認識しません。
私は標準dbConnect
とdbWriteTable
ステートメントを使用していますが、これらは日付以外でも問題なく機能します。
これによると:
MySQLは、次の形式のDATETIME値とTIMESTAMP値を認識します。「YYYY-MM-DDHH:MM:SS」または「YY-MM-DDHH:MM:SS」形式の文字列として。
したがって、1つの解決策は、日付を正しい形式でフォーマットすることです。
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;