Hal ini mungkin disebabkan oleh ketidakcocokan antara zona waktu lokal mesin Anda (Sys.timezone()) dan zona waktu data yang Anda ambil.
RODBC menggunakan as.POSIXct yang menggunakan zona waktu mesin Anda saat ini secara default. Jika data berisi stempel waktu yang tidak valid atau ambigu dalam zona waktu tersebut, hal aneh mungkin terjadi. Misalnya transisi ke dan dari waktu musim panas dapat menimbulkan masalah.
Ini berfungsi dengan baik karena kedua stempel waktu didefinisikan dengan baik di zona waktu lokal dan 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"
Yang pertama secara diam-diam menghilangkan H:M:S pada semua stempel waktu karena stempel waktu terakhir tidak valid dalam zona waktu lokal:
> 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"
Salah satu solusinya adalah mengambil data dengan apa adanya, lalu secara manual mengonversi ke POSIXct dengan menentukan zona waktu yang tepat. Dalam hal ini db berisi stempel waktu UTC:
data <- sqlQuery(mssql,
"SELECT timestamp, value FROM table",
as.is=c(TRUE, FALSE))
data$timestamp <- as.POSIXct(data$timestamp, tz="UTC")
person
amhr
schedule
16.06.2016
digits
dari kelasPOSIXct
? - person Mr. Mascaro   schedule 06.11.2014as.is
untuk menarik kolom itu sebagai karakter dan kemudian mengubahnya sendiri menjadi R. - person joran   schedule 06.11.2014as.is
? Permintaan saya saat ini terlihat seperti inisqlQuery(myconn,paste0("SELECT Period FROM stats.HourV2OnDisk WHERE Login = ", clientLogins[j,1]))
- person Mike   schedule 06.11.2014