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

R sqldf:将时间戳从GMT/UTC更改为本地时间,r,sqldf,lubridate,R,Sqldf,Lubridate,我的问题与中的完全相反sqldf正在将日期从GMT/UTC转换为本地时间。如何防止这种行为?注意:我使用lubridate包将日期字符串转换为POSIXct dates <- c("9/12/2010 0:25","9/12/2010 23:22","9/10/2010 1:55") foo <- data.frame(dates=mdy_hm(dates)) 鉴于 bar <- sqldf("SELECT * FROM foo") 的帮助wiki提供了一个如何处理日期的示

我的问题与中的完全相反<代码>sqldf正在将日期从GMT/UTC转换为本地时间。如何防止这种行为?注意:我使用
lubridate
包将日期字符串转换为POSIXct

dates <- c("9/12/2010 0:25","9/12/2010 23:22","9/10/2010 1:55")
foo <- data.frame(dates=mdy_hm(dates))
鉴于

bar <- sqldf("SELECT * FROM foo")
的帮助wiki提供了一个如何处理日期的示例。您需要使用as将结果转换为数字。然后将结果提供给processMethod,以将其转换为所需的格式

这里是对您的示例的改编

dates <- c("9/12/2010 0:25","9/12/2010 23:22","9/10/2010 1:55")
foo <- data.frame(dates=mdy_hm(dates))
processDates <- function(data, ...) {
   ix <- grepl("_convert$", names(data))
   names(data)[ix] <- sub("_convert$", "", names(data)[ix])
   data[ix] <- lapply(data[ix], as.POSIXct, 
                      origin = "1970-01-01",
                      tz='UTC')
   data
   }

sqldf("select dates as newdates_convert from foo", method = processDates)

             newdates
1 2010-09-12 00:25:00
2 2010-09-12 23:22:00
3 2010-09-10 01:55:00
dates的帮助wiki提供了一个如何处理日期的示例。您需要使用as将结果转换为数字。然后将结果提供给processMethod,以将其转换为所需的格式

这里是对您的示例的改编

dates <- c("9/12/2010 0:25","9/12/2010 23:22","9/10/2010 1:55")
foo <- data.frame(dates=mdy_hm(dates))
processDates <- function(data, ...) {
   ix <- grepl("_convert$", names(data))
   names(data)[ix] <- sub("_convert$", "", names(data)[ix])
   data[ix] <- lapply(data[ix], as.POSIXct, 
                      origin = "1970-01-01",
                      tz='UTC')
   data
   }

sqldf("select dates as newdates_convert from foo", method = processDates)

             newdates
1 2010-09-12 00:25:00
2 2010-09-12 23:22:00
3 2010-09-10 01:55:00

日期看起来输出取决于您的本地用户。如果您使用
DF,那么输出取决于您的本地语言,请输入您的本地语言,
Sys.getlocale('LC\u TIME')
。如果您使用
DF,请输入您的本地语言,
Sys.getlocale('LC\u TIME')
dates <- c("9/12/2010 0:25","9/12/2010 23:22","9/10/2010 1:55")
foo <- data.frame(dates=mdy_hm(dates))
processDates <- function(data, ...) {
   ix <- grepl("_convert$", names(data))
   names(data)[ix] <- sub("_convert$", "", names(data)[ix])
   data[ix] <- lapply(data[ix], as.POSIXct, 
                      origin = "1970-01-01",
                      tz='UTC')
   data
   }

sqldf("select dates as newdates_convert from foo", method = processDates)

             newdates
1 2010-09-12 00:25:00
2 2010-09-12 23:22:00
3 2010-09-10 01:55:00