r - sqldf:将时间戳从本地时间更改为 GMT/UTC

标签 r sqldf

在我的机器上,sqldf 将 POSIXct 从本地时间(我在 CST,GMT -0600)更改为 GMT/UTC。这是预期的行为吗?我可以阻止 R 或 sqldf 这样做吗?这是我的代码:

> library('sqldf')
> 
> before <- data.frame(ct_sys = Sys.time())
> before
               ct_sys
1 2012-03-01 12:57:58
> after <- sqldf('select * from before')
> after
               ct_sys
1 2012-03-01 18:57:58
> 

最佳答案

这似乎是 sqldf 中的时区错误。现在应该在 sqldf 版本 0.4-6.2 中修复(尚未在 CRAN 上修复,但您可以像这样尝试一下):

library(sqldf)
source("http://sqldf.googlecode.com/svn/trunk/R/sqldf.R")
before <- data.frame(ct_sys = Sys.time()); before
after <- sqldf('select * from before'); after

即使不这样做,sqldf("select * from before", method = "raw") 也会起作用,尽管这会返回一个数字列(您可以将其转换为 POSIXct)并可能影响其他列列也。以下是使用 method = "raw" 的示例。请注意,在这两种情况下我们都会得到 1330661786.181:

> library(sqldf)
>
> before <- data.frame(ct_sys = Sys.time()); dput(before)
structure(list(ct_sys = structure(1330661786.181, class = c("POSIXct", 
"POSIXt"))), .Names = "ct_sys", row.names = c(NA, -1L), class = "data.frame")
>
> after <- sqldf('select * from before', method = "raw"); dput(after)
structure(list(ct_sys = 1330661786.181), .Names = "ct_sys", row.names = 1L, class = "data.frame")

编辑:添加了使用method =“raw”的示例

关于r - sqldf:将时间戳从本地时间更改为 GMT/UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9522270/

相关文章:

R ggplot2 facetting 保持比率但覆盖/定义输出绘图大小

r - tibble::add_row 到嵌套 tibble 在 tidyr 1.0.0 下抛出错误

r - 从 “NA”字符串中解析引号

r - 错误: Cannot pass NA to dbQuoteIdentifier() in sqldf package in R

r - sqldf、csv 和包含逗号的字段

r - 使用聚合和过滤器进行高效的交叉连接

r - 根据 dplyr 中的条件更改多个列值

R:向量乘法矩阵

r - flextable 对象第一列的缩进

r - 使用 df 列中的值创建 sql 查询