R 转换为日期并使用秘鲁时区
我有一个从SQL查询中检索到的数据框(数据环):R 转换为日期并使用秘鲁时区,r,postgresql,dplyr,R,Postgresql,Dplyr,我有一个从SQL查询中检索到的数据框(数据环): loid_last last_modified_date LIB3149 2020-05-29 19:10:13 我只想提取日期。所以我尝试了这种转换: data_loid <- data_loid %>% mutate(loid_creation_date = as.Date(last_modified_date)) data_loid <- data_loid %>% mutate(loan
loid_last last_modified_date
LIB3149 2020-05-29 19:10:13
我只想提取日期。所以我尝试了这种转换:
data_loid <- data_loid %>%
mutate(loid_creation_date = as.Date(last_modified_date))
data_loid <- data_loid %>%
mutate(loan_creation_date = as.Date(last_modified_date, tz = "PET"))
我怀疑这是因为时区(我必须使用秘鲁时区),我尝试直接从查询中检索,使用SELECT loid\u last,last\u modified\u date,date(last\u modified\u date)loid\u creation\u date从loid\u last='LIB3149'
表中检索,但它返回我2020-05-30
,而不是2020-05-29
我尝试了这种转换:
data_loid <- data_loid %>%
mutate(loid_creation_date = as.Date(last_modified_date))
data_loid <- data_loid %>%
mutate(loan_creation_date = as.Date(last_modified_date, tz = "PET"))
数据冗余%
变更(贷款创建日期=截止日期(上次修改日期,tz=“PET”))
但它不起作用。非常感谢您的帮助。通过向查询中添加以下代码解决了此问题:
--- Time zone is critical for this project
SET timezone = 'America/Lima';
SELECT loid_last, last_modified_date,
date(last_modified_date) loid_creation_date
FROM table
WHERE loid_last = 'LIB3149';
在这之后,使用R可以轻松地进行检索,并且日期是正确的。在R中进行SQL查询之后,
last\u modified\u date
是什么类型的列??时区的文档可能会有所帮助“PET”
不被识别,但作为.POSIXct(“2020-05-29 19:10:13”,tz=“America/Lima”)
工作(因此作为.Date
也是如此)。timestamptz
是一种pg列类型,当它是R数据帧时,是否将其转换为字符
或POSIXct
?了解这一点将有助于在使用as.Date()时使用哪些方法。使用@r2evans指出的无效时区可能是本文的根本问题,因此,当您将tz=“PET”
替换为tz=“America/Lima”
时会发生什么?尝试使用R不识别的时区肯定会导致不可靠/不可接受的结果。在这种情况下,应该清楚的是,“PET”
是不可识别的,因此您需要学习如何找到R可以识别的时区,即在OlsonNames()
中找到的时区(这是一个loooooong向量,推荐head(OlsonNames())
,以便快速浏览)。我事先不知道有哪些区域可用,所以我做了grep(“秘鲁利马”,OlsonNames(),value=TRUE)
来找到一些看起来可信的东西。