2016-09-15 122 views
0

我希望基於閃亮的應用程序回寫到mysql數據庫。 這個代碼有一些修改來自優秀的1。我添加了一部分來給我插入記錄的時間戳。當我嘗試插入我得到以下錯誤。當地使用Shiny將記錄插入MYSQL數據庫

錯誤(康涅狄格州,聲明,...)備案: 無法運行的語句:不正確的日期時間值:「1473931679.54479」列「insert_dtm」在第1行

此日期時間值由我的代碼的Add insertion time stamp of the record and re-order columns生成。任何人都可以解釋爲什麼會這樣。

我應該在正在寫入的數據類型的表提的是DATETIME但我可以將其更改爲任何東西作爲興趣在所有IM是跟蹤時,記錄插入的

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數據庫中對它進行了更改,以便在新記錄進入系統時更新時間戳,同時也測試了您的解決方案。感謝您的幫助。請添加它作爲答案,我會接受它 –

+0

我剛剛意識到你需要'日期時間',但我建議轉換爲'日期',但使用format()函數(並轉換爲字符)也應該工作。請檢查一下。 – GyD

回答

1

之所以它不起作用是因爲日期格式Sys.time()和MySQL datedatetime類型之間的差異。

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

轉換爲MySQL日期時間格式後,它應該工作。我認爲問題在於時區。

對於YYYY-MM-DD格式

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

對於YYYY-MM-DD HH:mm:ss格式

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