我正在將數據從SQL導入到R中。數據包含SQL日期時間格式的列,日期格式如下:2014-10-01 13:00:05
。但是,當我使用RODBC軟件包將這些數據導入到R中時,R中的列格式化爲數據類型POSIXct
,並顯示如下列:2014-10-01
即它不包含小時,分鐘或秒。R和SQL:從SQL到R的導入日期和時間
有誰知道如何從SQL導入到R並保持小時,分鐘和秒?
請讓我知道如果我需要添加任何問題進一步澄清。
感謝
邁克
我正在將數據從SQL導入到R中。數據包含SQL日期時間格式的列,日期格式如下:2014-10-01 13:00:05
。但是,當我使用RODBC軟件包將這些數據導入到R中時,R中的列格式化爲數據類型POSIXct
,並顯示如下列:2014-10-01
即它不包含小時,分鐘或秒。R和SQL:從SQL到R的導入日期和時間
有誰知道如何從SQL導入到R並保持小時,分鐘和秒?
請讓我知道如果我需要添加任何問題進一步澄清。
感謝
邁克
我有同樣的問題,遇到下列解決方案來:
R: loss of precision when POSIXct binding with datetime (sql server)
您只需在閱讀列的字符串:
選擇轉換(nvarchar(24),Dt,21)作爲Dt,來自mybus的值
-Mike
我也有這樣做的sqlQuery的問題。 如果你的數據集不是太大,簡單的解決方法是「as.is」選項。這與調用SQLFetch
sqlFetch(myconn, "table_name", as.is = c(TRUE,TRUE,TRUE,TRUE))
這可能是工作得很好,由於你的機器的本地時區(Sys.timezone())和你檢索數據的時區之間的不匹配。
RODBC使用as.POSIXct,默認情況下使用您機器的當前時區。如果數據中包含任何時間戳,在該時區可能會發生無效或含糊不清的情況。例如,夏令時的轉換可能會導致麻煩。
這些做工精細,因爲這兩個時間標記在當地 時區和UTC明確定義:
> as.POSIXct(c("2016-01-01 00:00:01","2016-03-26 02:30:00"))
[1] "2016-01-01 00:00:01 CET" "2016-03-26 02:30:00 CET"
> as.POSIXct(c("2016-01-01 00:00:01","2016-03-26 02:30:00"), tz="UTC")
[1] "2016-01-01 00:00:01 UTC" "2016-03-26 02:30:00 UTC"
其中第一個默默滴H:M:S上的所有時間戳,因爲 最後時間戳是在本地時區無效:
> as.POSIXct(c("2016-01-01 00:00:01","2016-03-27 02:30:00"))
[1] "2016-01-01 CET" "2016-03-27 CET"
> as.POSIXct(c("2016-01-01 00:00:01","2016-03-27 02:30:00"), tz="UTC")
[1] "2016-01-01 00:00:01 UTC" "2016-03-27 02:30:00 UTC"
一種解決方案是與as.is來獲取數據,然後手動轉換爲POSIXct指定正確的時區。在這種情況下,數據庫包含UTC時間戳:
data <- sqlQuery(mssql,
"SELECT timestamp, value FROM table",
as.is=c(TRUE, FALSE))
data$timestamp <- as.POSIXct(data$timestamp, tz="UTC")
您是否試圖增加'POSIXct'類的數字參數值? – 2014-11-06 15:18:39
不,我該怎麼做? – Mike 2014-11-06 15:32:22
[This](http://stat.ethz.ch/R-manual/R-devel/library/base/html/DateTimeClasses.html)可能會有所幫助。 – 2014-11-06 15:37:37