2016-09-15 12 views
0

光沢のあるアプリケーションに基づいてmysqlデータベースに書き戻したいと思います。 このコードはいくつかの変更があり、優れた1に由来しています。レコードの挿入タイムスタンプを与える部分を追加しました。 文を実行できませんでした:不正な日時の値を「1473931679.54479」列「insert_dtm」の私は.localの中で次のようなエラーに(CONN、声明、...)Shinyを使用してレコードをMYSQL DBに挿入する

エラーを取得したレコードを挿入しようとすると、行1で

このdatetime値は、マイコードのAdd insertion time stamp of the record and re-order columnsによって生成されます。なぜこれが起こっているのか誰も説明できますか?

私はデータ型に書き込まれているテーブルに言及する必要がありますがDATETIMEですが、私は

save_data <- function(data) { 
    # Connect to the database 
    db <- dbConnect(MySQL(), dbname = databaseName, host =  
    options()$mysql$host, 
       port = options()$mysql$port, user = options()$mysql$user, 
       password = options()$mysql$password) 

    # Add insertion time stamp of the record and re-order columns 
    data <- data %>% 
    mutate(insert_dtm = Sys.time()) %>% 
    select (insert_dtm, everything()) %>% 

    # Construct the update query by looping over the data fields 
    query <- sprintf(foo) 

    # Submit the update query and disconnect 
    dbGetQuery(db, query) 
    dbDisconnect(db) 
} 
+1

あなたは、 'as.Date(Sys.timeを()みましたformat = "%Y-%m-%d") 'Sys.time()'の代わりに? – GyD

+0

ありがとう@GyDこれは確かに理由です。新しいレコードがシステムに入ったときにタイムスタンプを更新するためにMYSQL DBでそれを変更しましたが、動作するソリューションをテストしました。ご協力ありがとうございました。 –

+0

私はちょうど 'datetime'が必要だと気づきましたが、' date'に変換することを提案しましたが、 'format()'関数を使用して(文字に変換する)もうまくいくはずです。これをチェックしてください。 – GyD

答えて

1

理由レコードが挿入されたときのトラックを保っていることに興味のすべてのIMなど何にでもこれを変更することができますそれは、Sys.time()とMySQL dateまたはdatetimeの種類の日付の違いのために動作しませんでした。

> Sys.time() 
###[1] "2016-09-23 11:30:36 CEST" 
###MySQL datetime: "2016-09-23 11:30:36" 

MySQLの日時フォーマットに変換した後で動作するはずです。問題はタイムゾーンだと思う。 YYYY-MM-DDのHHの場合

YYYY-MM-DD形式の場合

> format(Sys.time(), "%Y-%m-%d") 
###[1] "2016-09-23" 

:mm:ssの形式

> format(Sys.time(), "%Y-%m-%d %H:%M:%S") 
###[1] "2016-09-23 11:37:45" 
関連する問題