1

Rで、DATETIME列のMySQLテーブルに書き込みたい時間があります。どうやってやるの?文字列としてフォーマットすると、SQLはそれを認識しません。SQLを使用as.POSIXltしても、それを認識しません。

私は標準dbConnectdbWriteTableステートメントを使用していますが、これらは日付以外でも問題なく機能します。

4

2 に答える 2

6

これによると:

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をインストールしていません。それを試して、これが役立つかどうか私に知らせてください。

于 2013-02-26T03:21:53.213 に答える
1

私はagstudyのソリューションを使用しており、dbSendQueryを使用してdbWriteTableの後にこのSQLを呼び出しています。うまく機能しているようです。

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