gpt4 book ai didi

r - 使用 Impala 连接时区在数据框中更改为 GMT

转载 作者:行者123 更新时间:2023-12-02 04:25:11 24 4
gpt4 key购买 nike

我正在使用 R 通过 Impala 连接到数据库。我的数据集中有一个日期列,并且我正在使用 GMT+3 时区。当我连接到数据库时,这就是我显示数据的方式。

drv <- JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver","/root/.../sqljdbc4-2.0.jar")
conn <- dbConnect(drv, "jdbc:sqlserver://port",<user>, <password>)

dbGetQuery(conn, "select eventdate from sample")

结果如下。

eventdate      
1 2017-01-31
2 2017-01-31
3 2017-01-31
4 2017-01-31
5 2017-01-31
6 2017-01-31

但我的要求是通过 impala 连接到 sqlserver 并按如下方式完成。

drv <- JDBC("com.cloudera.impala.jdbc41.Driver","/root/.../ImpalaJDBC41.jar")       

impala <- src_impala(drv, "jdbc:impala://host","username", "password")

dbGetQuery(impala, "select eventdate from sample")

我得到的结果是

eventdate 
1 2017-01-30 21:00:00.000000000
2 2017-01-30 21:00:00.000000000
3 2017-01-30 21:00:00.000000000
4 2017-01-30 21:00:00.000000000
5 2017-01-30 21:00:00.000000000

因此默认情况下它采用时区 GMT 并从实际数据中删除 3 小时。如何防止这种情况发生。

是否可以在连接自身时更改时区?使用 tz() 提取数据和更改时间在我的情况下可能不起作用,因为这是一个巨大的数据集,提取本身需要时间。

最佳答案

试试 lubridate 包。我知道在 R 中使用时区的最简单方法:

library(lubridate)
with_tz(Sys.time(),"Etc/GMT+3" )
# [1] "2019-03-14 03:39:07 -03"
with_tz(Sys.time(),'UTC')
# [1] "2019-03-14 06:39:27 UTC"

您可以使用命令 OlsonNames() 查看操作系统的有效时区名称。或者,您可以使用函数 force_tz()

强制设置时区
t
[1] "2019-03-14 06:46:06 UTC"
force_tz(t,'Etc/GMT+3')
[1] "2019-03-14 06:46:06 -03"

关于r - 使用 Impala 连接时区在数据框中更改为 GMT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55156213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com