อาจเกิดจากการไม่ตรงกันระหว่างเขตเวลาท้องถิ่นของเครื่องของคุณ (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 ด้วยตนเองโดยระบุเขตเวลาที่เหมาะสม ในกรณีนี้ db มีการประทับเวลา 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
ของคลาสPOSIXct
หรือไม่ - person Mr. Mascaro   schedule 06.11.2014as.is
เพื่อดึงคอลัมน์นั้นเป็นอักขระ แล้วแปลงด้วยตนเองเป็น R - person joran   schedule 06.11.2014as.is
ได้อย่างไร ขณะนี้ข้อความค้นหาของฉันมีลักษณะเช่นนี้sqlQuery(myconn,paste0("SELECT Period FROM stats.HourV2OnDisk WHERE Login = ", clientLogins[j,1]))
- person Mike   schedule 06.11.2014